summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index b8f1f4ebc7..507cb11fff 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -53,6 +53,8 @@
#include "QtGui/private/qwindow_p.h"
#include <QtGui/QPlatformCursor>
+#include <QtGui/QGuiApplication>
+#include <QtGui/QScreen>
QT_BEGIN_NAMESPACE
@@ -733,7 +735,13 @@ int QWidget::metric(PaintDeviceMetric m) const
{
Q_D(const QWidget);
- QPlatformScreen *screen = QPlatformScreen::platformScreenForWindow(windowHandle());
+ QPlatformScreen *screen = 0;
+ if (QWidget *topLevel = window())
+ if (QWindow *topLevelWindow = topLevel->windowHandle())
+ screen = QPlatformScreen::platformScreenForWindow(topLevelWindow);
+ if (!screen && QGuiApplication::primaryScreen())
+ screen = QGuiApplication::primaryScreen()->handle();
+
if (!screen) {
if (m == PdmDpiX || m == PdmDpiY)
return 72;