summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsscreen.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-05-05 15:06:56 +0200
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-06-02 11:00:55 +0000
commitdbe2dd295cce19680f8ba7a7cca65150701051e2 (patch)
treeeeca7ecc497847ba6fd47751b8f36db64bdc6091 /src/plugins/platforms/windows/qwindowsscreen.cpp
parent7e4fba3e56404c0bc9692269671eb49b08c313a6 (diff)
Adapt Windows plugin to new HighDPI API.
- Implement QPlatformScreen::pixelDensity(). - Map coordinates. Change-Id: Ieaf4e3b0f3969607216d7713c5d6f1e60fa27116 Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsscreen.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index 5863629a01..7f3bb96503 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -43,6 +43,7 @@
#include <QtGui/QPixmap>
#include <QtGui/QGuiApplication>
#include <qpa/qwindowsysteminterface.h>
+#include <private/qhighdpiscaling_p.h>
#include <QtGui/QScreen>
#include <QtCore/QDebug>
@@ -116,12 +117,14 @@ static bool monitorData(HMONITOR hMonitor, QWindowsScreenData *data)
HDC hdc = CreateDC(info.szDevice, NULL, NULL, NULL);
#endif
if (hdc) {
+ if (!QHighDpiScaling::isActive()) { // Assume 96 DPI to get fonts right when scaling.
#ifndef Q_OS_WINCE
- const QDpi dpi = monitorDPI(hMonitor);
- data->dpi = dpi.first ? dpi : deviceDPI(hdc);
+ const QDpi dpi = monitorDPI(hMonitor);
+ data->dpi = dpi.first ? dpi : deviceDPI(hdc);
#else
- data->dpi = deviceDPI(hdc);
+ data->dpi = deviceDPI(hdc);
#endif
+ }
data->depth = GetDeviceCaps(hdc, BITSPIXEL);
data->format = data->depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
data->physicalSizeMM = QSizeF(GetDeviceCaps(hdc, HORZSIZE), GetDeviceCaps(hdc, VERTSIZE));
@@ -287,6 +290,12 @@ QWindowsScreen *QWindowsScreen::screenOf(const QWindow *w)
return 0;
}
+qreal QWindowsScreen::pixelDensity() const
+{
+ const qreal physicalDpi = m_data.geometry.width() / m_data.physicalSizeMM.width() * qreal(25.4);
+ return qRound(physicalDpi / 96);
+}
+
/*!
\brief Determine siblings in a virtual desktop system.