diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/styles/qwindowsxpstyle.cpp | 9 |
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)) |