From ee409e6f0cab4aa051f75f7c7116d4b607d137fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 24 Feb 2021 00:06:26 +0100 Subject: High-DPI: Set the minimum scale factor to 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoid painting errors with dpr < 1, also for the PassThrough mode. This limits the minimum high-dpi scale factor to 1, for the code path which determines the scale factor based on screen DPI. Pick-to: 6.1 Task-number: QTBUG-89948 Change-Id: I14b3f130f0ae141d5f05c87437f926a9f76d1dec Reviewed-by: Volker Hilsheimer Reviewed-by: Tor Arne Vestbø --- tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests') diff --git a/tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp b/tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp index 09bf8439c8..512209ab73 100644 --- a/tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp +++ b/tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp @@ -49,6 +49,7 @@ private slots: void initTestCase(); void qhighdpiscaling_data(); void qhighdpiscaling(); + void minimumDpr(); void noscreens(); void screenDpiAndDpr_data(); void screenDpiAndDpr(); @@ -223,6 +224,20 @@ void tst_QHighDpi::screenDpiAndDpr() } } +void tst_QHighDpi::minimumDpr() +{ + QList dpiValues { 40, 60, 95 }; + std::unique_ptr app(createStandardOffscreenApp(dpiValues)); + for (QScreen *screen : app->screens()) { + // Qt does not currently support DPR values < 1. Make sure + // the minimum DPR value is 1, also when the screen reports + // a low DPI. + QCOMPARE(screen->devicePixelRatio(), 1); + QWindow window(screen); + QCOMPARE(window.devicePixelRatio(), 1); + } +} + void tst_QHighDpi::noscreens() { // Create application object with a no-screens configuration (should not crash) -- cgit v1.2.3