From 32cec9f3bab992a2fd749bf386a9b8106b89b1fe Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 26 Jul 2011 10:30:56 +0200 Subject: Retrieve QPlatformScreen from top level when querying widget metrics. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check for 0 and use primary screen as default. Change-Id: Ib4d0d3f507e7fb17687f5e126b49f98cfdbead6c Reviewed-by: Samuel Rødal Reviewed-on: http://codereview.qt.nokia.com/2166 Reviewed-by: Qt Sanity Bot Reviewed-by: Friedemann Kleint --- src/widgets/kernel/qwidget_qpa.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/widgets/kernel/qwidget_qpa.cpp') 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 +#include +#include 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; -- cgit v1.2.3