summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/winrt
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/winrt')
-rw-r--r--src/plugins/platforms/winrt/qwinrtscreen.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp
index 1a263719b5..c366babebc 100644
--- a/src/plugins/platforms/winrt/qwinrtscreen.cpp
+++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp
@@ -448,6 +448,7 @@ public:
QSizeF logicalSize;
QSurfaceFormat surfaceFormat;
qreal logicalDpi;
+ QDpi physicalDpi;
qreal scaleFactor;
Qt::ScreenOrientation nativeOrientation;
Qt::ScreenOrientation orientation;
@@ -629,7 +630,8 @@ QSurfaceFormat QWinRTScreen::surfaceFormat() const
QSizeF QWinRTScreen::physicalSize() const
{
Q_D(const QWinRTScreen);
- return d->logicalSize / d->logicalDpi * qreal(25.4);
+ return QSizeF(d->logicalSize.width() * d->scaleFactor / d->physicalDpi.first * qreal(25.4),
+ d->logicalSize.height() * d->scaleFactor / d->physicalDpi.second * qreal(25.4));
}
QDpi QWinRTScreen::logicalDpi() const
@@ -1137,6 +1139,14 @@ HRESULT QWinRTScreen::onDpiChanged(IDisplayInformation *, IInspectable *)
RETURN_OK_IF_FAILED("Failed to get logical DPI.");
d->logicalDpi = dpi;
+ hr = d->displayInformation->get_RawDpiX(&dpi);
+ RETURN_OK_IF_FAILED("Failed to get x raw DPI.");
+ d->physicalDpi.first = dpi ? dpi : 96.0;
+
+ hr = d->displayInformation->get_RawDpiY(&dpi);
+ RETURN_OK_IF_FAILED("Failed to get y raw DPI.");
+ d->physicalDpi.second = dpi ? dpi : 96.0;
+
return S_OK;
}