diff options
-rw-r--r-- | src/gui/kernel/qwindow_qpa.cpp | 6 | ||||
-rw-r--r-- | src/gui/kernel/qwindow_qpa.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qwindow_qpa_p.h | 3 | ||||
-rw-r--r-- | src/gui/painting/qwindowsurface.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 10 |
5 files changed, 15 insertions, 9 deletions
diff --git a/src/gui/kernel/qwindow_qpa.cpp b/src/gui/kernel/qwindow_qpa.cpp index aa23683654..19da97acef 100644 --- a/src/gui/kernel/qwindow_qpa.cpp +++ b/src/gui/kernel/qwindow_qpa.cpp @@ -327,6 +327,12 @@ QPlatformWindow *QWindow::handle() const return d->platformWindow; } +QWindowSurface *QWindow::surface() const +{ + Q_D(const QWindow); + return d->surface; +} + void QWindow::showMinimized() { qDebug() << "unimplemented:" << __FILE__ << __LINE__; diff --git a/src/gui/kernel/qwindow_qpa.h b/src/gui/kernel/qwindow_qpa.h index b13cf9165b..f2fde2d532 100644 --- a/src/gui/kernel/qwindow_qpa.h +++ b/src/gui/kernel/qwindow_qpa.h @@ -66,6 +66,7 @@ class QWheelEvent; class QPlatformWindow; class QWindowContext; +class QWindowSurface; class Q_GUI_EXPORT QWindow : public QObject { @@ -132,6 +133,7 @@ public: void destroy(); QPlatformWindow *handle() const; + QWindowSurface *surface() const; public Q_SLOTS: inline void show() { setVisible(true); } @@ -174,6 +176,7 @@ private: friend class QGuiApplication; friend class QGuiApplicationPrivate; + friend class QWindowSurface; }; QT_END_NAMESPACE diff --git a/src/gui/kernel/qwindow_qpa_p.h b/src/gui/kernel/qwindow_qpa_p.h index 06458290f1..1acc023e92 100644 --- a/src/gui/kernel/qwindow_qpa_p.h +++ b/src/gui/kernel/qwindow_qpa_p.h @@ -62,13 +62,13 @@ public: , platformWindow(0) , visible(false) , glContext(0) + , surface(0) { isWindow = true; } ~QWindowPrivate() { - } Qt::WindowFlags windowFlags; @@ -80,6 +80,7 @@ public: QString windowTitle; QRect geometry; QWindowContext *glContext; + QWindowSurface *surface; }; diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp index 97fb7a9972..eea3e60514 100644 --- a/src/gui/painting/qwindowsurface.cpp +++ b/src/gui/painting/qwindowsurface.cpp @@ -116,6 +116,8 @@ public: QWindowSurface::QWindowSurface(QWindow *window, bool /*setDefaultSurface*/) : d_ptr(new QWindowSurfacePrivate(window)) { + if (window) + window->d_func()->surface = this; #if 0 if (!QApplicationPrivate::runtime_graphics_system) { if (setDefaultSurface && window) diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 4d420e36a0..b0df622b33 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -528,18 +528,12 @@ QPlatformGLContext *QXcbWindow::glContext() const void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event) { -#if 0 - QWidget *widget = window()->widget(); - if (!widget) - return; - - QWindowSurface *surface = widget->windowSurface(); + QWindowSurface *surface = window()->surface(); if (surface) { QRect rect(event->x, event->y, event->width, event->height); - surface->flush(widget, rect, QPoint()); + surface->flush(window(), rect, QPoint()); } -#endif } void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *event) |