void HelloWindow::render()
{
+ if (!glContext())
+ return;
+
glContext()->makeCurrent();
glClearColor(0.1f, 0.1f, 0.2f, 1.0f);
void QGuiApplicationPrivate::processCloseEvent(QWindowSystemInterfacePrivate::CloseEvent *e)
{
- if (e->topLevel.isNull()) {
- //qDebug() << "QGuiApplicationPrivate::processCloseEvent NULL";
+ if (e->window.isNull())
return;
- }
-// e->topLevel.data()->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
+
+ QCloseEvent event;
+ QGuiApplication::sendSpontaneousEvent(e->window.data(), &event);
}
void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::TouchEvent *)
#include "qwidgetwindow_qpa_p.h"
+#include "private/qwidget_p.h"
+
QT_BEGIN_NAMESPACE
QWidgetWindow::QWidgetWindow(QWidget *widget)
bool QWidgetWindow::event(QEvent *event)
{
switch (event->type()) {
- case QEvent::MouseMove:
- case QEvent::MouseButtonPress:
- case QEvent::MouseButtonRelease:
- case QEvent::MouseButtonDblClick:
- handleMouseEvent(static_cast<QMouseEvent *>(event));
+ case QEvent::Close:
+ handleCloseEvent(static_cast<QCloseEvent *>(event));
return true;
case QEvent::KeyPress:
handleKeyEvent(static_cast<QKeyEvent *>(event));
return true;
+ case QEvent::MouseMove:
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseButtonDblClick:
+ handleMouseEvent(static_cast<QMouseEvent *>(event));
+ return true;
+
case QEvent::Move:
handleMoveEvent(static_cast<QMoveEvent *>(event));
return true;
QGuiApplication::sendSpontaneousEvent(m_widget, event);
}
+void QWidgetWindow::handleCloseEvent(QCloseEvent *)
+{
+ m_widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
+}
+
QT_END_NAMESPACE
protected:
bool event(QEvent *);
- void handleMouseEvent(QMouseEvent *);
+ void handleCloseEvent(QCloseEvent *);
void handleKeyEvent(QKeyEvent *);
+ void handleMouseEvent(QMouseEvent *);
void handleMoveEvent(QMoveEvent *);
void handleResizeEvent(QResizeEvent *);
QWindowContext * QWindow::glContext() const
{
Q_D(const QWindow);
- if (!d->glContext)
+ if (d->platformWindow && !d->glContext)
const_cast<QWindowPrivate *>(d)->glContext = new QWindowContext(const_cast<QWindow *>(this));
return d->glContext;
}
break;
#endif
+ case QEvent::Close:
+ destroy();
+ break;
+
default:
return QObject::event(event);
}
class CloseEvent : public WindowSystemEvent {
public:
- CloseEvent(QWindow *tlw)
- : WindowSystemEvent(Close), topLevel(tlw) { }
- QWeakPointer<QWindow> topLevel;
+ CloseEvent(QWindow *w)
+ : WindowSystemEvent(Close), window(w) { }
+ QWeakPointer<QWindow> window;
};
class GeometryChangeEvent : public WindowSystemEvent {