summaryrefslogtreecommitdiffstats
path: root/src/widgets/styles/qwindowsxpstyle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/styles/qwindowsxpstyle.cpp')
-rw-r--r--src/widgets/styles/qwindowsxpstyle.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp
index 63d275a391..a24f42c5f1 100644
--- a/src/widgets/styles/qwindowsxpstyle.cpp
+++ b/src/widgets/styles/qwindowsxpstyle.cpp
@@ -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))