diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-05-05 15:06:56 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-06-02 11:00:55 +0000 |
commit | dbe2dd295cce19680f8ba7a7cca65150701051e2 (patch) | |
tree | eeca7ecc497847ba6fd47751b8f36db64bdc6091 /src/plugins/platforms/windows/qwindowsscreen.cpp | |
parent | 7e4fba3e56404c0bc9692269671eb49b08c313a6 (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.cpp | 15 |
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. |