diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-04-29 15:45:30 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-04-29 15:46:07 +0200 |
commit | 57b7c82560088149010b000bc78a3a6d8f2f8834 (patch) | |
tree | a78376c695b0f649c7fcb4992a1dafa6b1e4cb13 /src/plugins | |
parent | c1aa42e195cc6ad6b94b4d666fcdf7599dd91e8c (diff) |
Add QWidgetWindow to bridge events from QWindow to QWidget.
Gets rid of QWidget dependencies in QWindow and QWindowSurface. Events
are not delivered to the correct child widget yet.
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbintegration.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindowsurface.cpp | 19 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindowsurface.h | 4 |
4 files changed, 15 insertions, 15 deletions
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp index 80f375c6b2..7aa3b3f1ba 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -95,7 +95,7 @@ QPlatformWindow *QXcbIntegration::createPlatformWindow(QWindow *window) const QWindowSurface *QXcbIntegration::createWindowSurface(QWindow *window, WId winId) const { Q_UNUSED(winId); - return new QXcbWindowSurface(window->widget()); + return new QXcbWindowSurface(window); } QList<QPlatformScreen *> QXcbIntegration::screens() const diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index fa8ab0aa22..4d420e36a0 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -89,7 +89,6 @@ QXcbWindow::QXcbWindow(QWindow *window) : QPlatformWindow(window) , m_context(0) { - QWidget *tlw = window->widget(); m_screen = static_cast<QXcbScreen *>(QGuiApplicationPrivate::platformIntegration()->screens().at(0)); setConnection(m_screen->connection()); @@ -209,6 +208,7 @@ QXcbWindow::QXcbWindow(QWindow *window) &m_syncCounter)); } +#if 0 if (tlw && isTransient(tlw) && tlw->parentWidget()) { // ICCCM 4.1.2.6 QWidget *p = tlw->parentWidget()->window(); @@ -218,6 +218,7 @@ QXcbWindow::QXcbWindow(QWindow *window) 1, &parentWindow)); } +#endif // set the PID to let the WM kill the application if unresponsive long pid = getpid(); @@ -527,6 +528,7 @@ QPlatformGLContext *QXcbWindow::glContext() const void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event) { +#if 0 QWidget *widget = window()->widget(); if (!widget) return; @@ -537,6 +539,7 @@ void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event) surface->flush(widget, rect, QPoint()); } +#endif } void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *event) diff --git a/src/plugins/platforms/xcb/qxcbwindowsurface.cpp b/src/plugins/platforms/xcb/qxcbwindowsurface.cpp index 89e6bd7ed7..a371d2dd06 100644 --- a/src/plugins/platforms/xcb/qxcbwindowsurface.cpp +++ b/src/plugins/platforms/xcb/qxcbwindowsurface.cpp @@ -167,12 +167,12 @@ void QXcbShmImage::preparePaint(const QRegion ®ion) } } -QXcbWindowSurface::QXcbWindowSurface(QWidget *widget, bool setDefaultSurface) - : QWindowSurface(widget, setDefaultSurface) +QXcbWindowSurface::QXcbWindowSurface(QWindow *window, bool setDefaultSurface) + : QWindowSurface(window, setDefaultSurface) , m_image(0) , m_syncingResize(false) { - QXcbScreen *screen = static_cast<QXcbScreen *>(QPlatformScreen::platformScreenForWidget(widget)); + QXcbScreen *screen = static_cast<QXcbScreen *>(QPlatformScreen::platformScreenForWindow(window)); setConnection(screen->connection()); } @@ -195,7 +195,7 @@ void QXcbWindowSurface::endPaint(const QRegion &) { } -void QXcbWindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoint &offset) +void QXcbWindowSurface::flush(QWindow *window, const QRegion ®ion, const QPoint &offset) { QRect bounds = region.boundingRect(); @@ -204,14 +204,11 @@ void QXcbWindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoi Q_XCB_NOOP(connection()); - QXcbWindow *window = static_cast<QXcbWindow *>(widget->windowHandle()->handle()); - - extern QWidgetData* qt_widget_data(QWidget *); - QPoint widgetOffset = qt_qwidget_data(widget)->wrect.topLeft(); + QXcbWindow *platformWindow = static_cast<QXcbWindow *>(window->handle()); QVector<QRect> rects = region.rects(); for (int i = 0; i < rects.size(); ++i) - m_image->put(window->xcb_window(), rects.at(i).topLeft() - widgetOffset, rects.at(i).translated(offset)); + m_image->put(platformWindow->xcb_window(), rects.at(i).topLeft(), rects.at(i).translated(offset)); Q_XCB_NOOP(connection()); @@ -219,7 +216,7 @@ void QXcbWindowSurface::flush(QWidget *widget, const QRegion ®ion, const QPoi xcb_flush(xcb_connection()); connection()->sync(); m_syncingResize = false; - window->updateSyncRequestCounter(); + platformWindow->updateSyncRequestCounter(); } } @@ -231,7 +228,7 @@ void QXcbWindowSurface::resize(const QSize &size) Q_XCB_NOOP(connection()); QWindowSurface::resize(size); - QXcbScreen *screen = static_cast<QXcbScreen *>(QPlatformScreen::platformScreenForWidget(window())); + QXcbScreen *screen = static_cast<QXcbScreen *>(QPlatformScreen::platformScreenForWindow(window())); delete m_image; m_image = new QXcbShmImage(screen, size); diff --git a/src/plugins/platforms/xcb/qxcbwindowsurface.h b/src/plugins/platforms/xcb/qxcbwindowsurface.h index 23d32ef445..60ed7497db 100644 --- a/src/plugins/platforms/xcb/qxcbwindowsurface.h +++ b/src/plugins/platforms/xcb/qxcbwindowsurface.h @@ -53,11 +53,11 @@ class QXcbShmImage; class QXcbWindowSurface : public QXcbObject, public QWindowSurface { public: - QXcbWindowSurface(QWidget *widget, bool setDefaultSurface = true); + QXcbWindowSurface(QWindow *widget, bool setDefaultSurface = true); ~QXcbWindowSurface(); QPaintDevice *paintDevice(); - void flush(QWidget *widget, const QRegion ®ion, const QPoint &offset); + void flush(QWindow *window, const QRegion ®ion, const QPoint &offset); void resize(const QSize &size); bool scroll(const QRegion &area, int dx, int dy); |