1From f9f524b9cf964be802682e30571bf83d6cbf16b3 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
3Date: Thu, 10 Nov 2016 14:17:53 +0100
4Subject: [PATCH 26/27] Deprecate QT_AUTO_SCREEN_SCALE_FACTOR
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Replace by QT_ENABLE_HIGHDPI_SCALING.
10
11QT_AUTO_SCREEN_SCALE_FACTOR has the usability problem that it mixes
12enabling the high-DPI scaling mode with the method of getting screen
13scale factors (“auto”). Due to this, it ends up with a slightly
14strange name.
15
16QT_ENABLE_HIGHDPI_SCALING matches the C++ option
17(Qt::AA_EnableHighDPiScaling), and leaves the scale factor acquisition
18method unspecified, possibly to be set by some other means (like
19QT_SCREEN_SCALE_FACTORS).
20
21Done-with: Friedemann Kleint <Friedemann.Kleint@qt.io>
22Task-number: QTBUG-53022
23Change-Id: I30033d91175a00db7837efc9c48c33396f5f0449
24---
25 src/gui/kernel/qhighdpiscaling.cpp | 29 +++++++++++++++++++++++------
26 1 file changed, 23 insertions(+), 6 deletions(-)
27
28diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp
29index b1350599..52c0665b 100644
30--- a/src/gui/kernel/qhighdpiscaling.cpp
31+++ b/src/gui/kernel/qhighdpiscaling.cpp
32@@ -54,8 +54,10 @@ Q_LOGGING_CATEGORY(lcScaling, "qt.scaling");
33
34 #ifndef QT_NO_HIGHDPISCALING
35 static const char legacyDevicePixelEnvVar[] = "QT_DEVICE_PIXEL_RATIO";
36+static const char legacyAutoScreenEnvVar[] = "QT_AUTO_SCREEN_SCALE_FACTOR";
37+
38+static const char enableHighDpiScalingEnvVar[] = "QT_ENABLE_HIGHDPI_SCALING";
39 static const char scaleFactorEnvVar[] = "QT_SCALE_FACTOR";
40-static const char autoScreenEnvVar[] = "QT_AUTO_SCREEN_SCALE_FACTOR";
41 static const char screenFactorsEnvVar[] = "QT_SCREEN_SCALE_FACTORS";
42 static const char scaleFactorRoundingPolicyEnvVar[] = "QT_SCALE_FACTOR_ROUNDING_POLICY";
43 static const char dpiAdjustmentPolicyEnvVar[] = "QT_DPI_ADJUSTMENT_POLICY";
44@@ -88,17 +90,24 @@ static inline qreal initialGlobalScaleFactor()
45             result = f;
46         }
47     } else {
48+        // Check for deprecated environment variables.
49         if (qEnvironmentVariableIsSet(legacyDevicePixelEnvVar)) {
50             qWarning("Warning: %s is deprecated. Instead use:\n"
51                      "   %s to enable platform plugin controlled per-screen factors.\n"
52-                     "   %s to set per-screen factors.\n"
53+                     "   %s to set per-screen DPI.\n"
54                      "   %s to set the application global scale factor.",
55-                     legacyDevicePixelEnvVar, autoScreenEnvVar, screenFactorsEnvVar, scaleFactorEnvVar);
56+                     legacyDevicePixelEnvVar, legacyAutoScreenEnvVar, screenFactorsEnvVar, scaleFactorEnvVar);
57
58             int dpr = qEnvironmentVariableIntValue(legacyDevicePixelEnvVar);
59             if (dpr > 0)
60                 result = dpr;
61         }
62+
63+        if (qEnvironmentVariableIsSet(legacyAutoScreenEnvVar)) {
64+            qWarning("Warning: %s is deprecated. Instead use:\n"
65+                     "   %s to enable platform plugin controlled per-screen factors.",
66+                     legacyAutoScreenEnvVar, enableHighDpiScalingEnvVar);
67+        }
68     }
69     return result;
70 }
71@@ -256,16 +265,24 @@ static inline bool usePixelDensity()
72     // Determine if we should set a scale factor based on the pixel density
73     // reported by the platform plugin. There are several enablers and several
74     // disablers. A single disable may veto all other enablers.
75+
76+    // First, check of there is an explicit disable.
77     if (QCoreApplication::testAttribute(Qt::AA_DisableHighDpiScaling))
78         return false;
79     bool screenEnvValueOk;
80-    const int screenEnvValue = qEnvironmentVariableIntValue(autoScreenEnvVar, &screenEnvValueOk);
81+    const int screenEnvValue = qEnvironmentVariableIntValue(legacyAutoScreenEnvVar, &screenEnvValueOk);
82     if (screenEnvValueOk && screenEnvValue < 1)
83         return false;
84+    bool enableEnvValueOk;
85+    const int enableEnvValue = qEnvironmentVariableIntValue(enableHighDpiScalingEnvVar, &enableEnvValueOk);
86+    if (enableEnvValueOk && enableEnvValue < 1)
87+        return false;
88+
89+    // Then return if there was an enable.
90     return QCoreApplication::testAttribute(Qt::AA_EnableHighDpiScaling)
91         || (screenEnvValueOk && screenEnvValue > 0)
92-        || (qEnvironmentVariableIsSet(legacyDevicePixelEnvVar) &&
93-            qgetenv(legacyDevicePixelEnvVar).compare("auto", Qt::CaseInsensitive) == 0);
94+        || (enableEnvValueOk && enableEnvValue > 0)
95+        || (qEnvironmentVariableIsSet(legacyDevicePixelEnvVar) && qgetenv(legacyDevicePixelEnvVar).toLower() == "auto");
96 }
97
98 qreal QHighDpiScaling::rawScaleFactor(const QPlatformScreen *screen)
99--
1002.22.0.windows.1
101
102