summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2011-10-14 17:11:06 +0300
committerQt by Nokia <qt-info@nokia.com>2011-10-14 19:42:26 +0200
commitb091ec9a22f841412552f6698bda85aa0ab42b6c (patch)
treee62a6df7920e6cfe8827eb663e0a6a454a254c44 /src
parentbe1e6d17b919ea89c02bf37a12465c8d27f1380b (diff)
Avoid using 0 as the default winId in QPlatformWindow.
When the platform plugin does not reimplement QPlatformWindow::winId() to return a non-zero value, the default implementation provides a WId of 0. This breaks various scenarios with QWidgets which, for example in nativeParentWidget(), rely on internalWinId() being non-zero for TLWs. As a result, apps like collidingmice will crash with the 'minimal' platform plugin when they try to do markDirtyOnScreen for the graphics view's viewport widget because viewport()->nativeParentWidget() unexpectedly returns null, even though it should return the QGraphicsView. The patch makes the default value WId(1) in order to to avoid this. Change-Id: Iafef2e510e32b5610b8cef742313e9119ed64963 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gui/kernel/qplatformwindow_qpa.cpp b/src/gui/kernel/qplatformwindow_qpa.cpp
index b29112abef..fa1d3a33f8 100644
--- a/src/gui/kernel/qplatformwindow_qpa.cpp
+++ b/src/gui/kernel/qplatformwindow_qpa.cpp
@@ -166,7 +166,14 @@ Qt::WindowState QPlatformWindow::setWindowState(Qt::WindowState)
/*!
Reimplement in subclasses to return a handle to the native window
*/
-WId QPlatformWindow::winId() const { return WId(0); }
+WId QPlatformWindow::winId() const
+{
+ // Return anything but 0. Returning 0 would cause havoc with QWidgets on
+ // very basic platform plugins that do not reimplement this function,
+ // because the top-level widget's internalWinId() would always be 0 which
+ // would mean top-levels are never treated as native.
+ return WId(1);
+}
/*!
This function is called to enable native child window in QPA. It is common not to support this