Windows XP style: Fix warnings wrt retrieving HANDLE from 0-window.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 6 Feb 2012 08:38:48 +0000 (09:38 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 6 Feb 2012 09:15:09 +0000 (10:15 +0100)
Exclude invisible top level dialogs for whom a native
dialog is being shown from top-level search.

Change-Id: Ia94599905457d81d342c14d09ad0b0fc89ec4ab1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
src/widgets/styles/qwindowsxpstyle.cpp

index 63d275a..a24f42c 100644 (file)
@@ -337,10 +337,11 @@ HWND QWindowsXPStylePrivate::winId(const QWidget *widget)
         if (const HWND hwnd = QApplicationPrivate::getHWNDForWidget(const_cast<QWidget *>(widget)))
             return hwnd;
 
-    const QWidgetList toplevels = QApplication::topLevelWidgets();
-    if (!toplevels.isEmpty())
-        if (const HWND topLevelHwnd = QApplicationPrivate::getHWNDForWidget(toplevels.front()))
-            return topLevelHwnd;
+    // Find top level with native window (there might be dialogs that do not have one).
+    foreach (const QWidget *toplevel, QApplication::topLevelWidgets())
+        if (toplevel->windowHandle())
+            if (const HWND topLevelHwnd = QApplicationPrivate::getHWNDForWidget(toplevel))
+                return topLevelHwnd;
 
     if (QDesktopWidget *desktop = qApp->desktop())
         if (const HWND desktopHwnd = QApplicationPrivate::getHWNDForWidget(desktop))