From 90358f6042d1fe2db849e17e1b0c875fb0560b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 31 Aug 2020 14:01:12 +0200 Subject: Deprecate and remove uses of AA_DisableHighDpiScaling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ibadce68775858c524b998aacad310905ba2c2e8e Reviewed-by: Volker Hilsheimer Reviewed-by: Morten Johan Sørvig --- examples/widgets/gallery/main.cpp | 10 ---------- src/corelib/global/qnamespace.h | 8 ++++++-- src/corelib/global/qnamespace.qdoc | 10 +--------- src/corelib/kernel/qcoreapplication.cpp | 1 - src/gui/kernel/qhighdpiscaling.cpp | 10 +--------- src/testlib/doc/src/qttestlib-manual.qdoc | 3 +-- src/testlib/qtest.h | 2 +- tests/auto/gui/kernel/noqteventloop/tst_noqteventloop.cpp | 3 ++- .../styles/qstylesheetstyle/tst_qstylesheetstyle.cpp | 11 ++--------- tests/manual/embeddedintoforeignwindow/main.cpp | 3 --- tests/manual/foreignwindows/main.cpp | 3 --- tests/manual/highdpi/main.cpp | 14 +------------- tests/manual/qcursor/qcursorhighdpi/main.cpp | 5 ----- 13 files changed, 15 insertions(+), 68 deletions(-) diff --git a/examples/widgets/gallery/main.cpp b/examples/widgets/gallery/main.cpp index a32c8eb8e1..ba83c764e3 100644 --- a/examples/widgets/gallery/main.cpp +++ b/examples/widgets/gallery/main.cpp @@ -54,16 +54,6 @@ int main(int argc, char *argv[]) { - bool useHighDpiScaling = true; - - for (int i = 1; i < argc; ++i) { - if (qstrcmp(argv[i], "--no-scaling") == 0) - useHighDpiScaling = false; - } - - if (!useHighDpiScaling) - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); - QApplication app(argc, argv); WidgetGallery gallery; gallery.show(); diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 86afa623a9..9b5af17f7c 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -470,9 +470,13 @@ namespace Qt { AA_ShareOpenGLContexts = 18, AA_SetPalette = 19, #if QT_DEPRECATED_SINCE(6, 0) - AA_EnableHighDpiScaling Q_DECL_ENUMERATOR_DEPRECATED = 20, + AA_EnableHighDpiScaling Q_DECL_ENUMERATOR_DEPRECATED_X( + "High-DPI scaling is always enabled. " \ + "This attribute no longer has any effect.") = 20, + AA_DisableHighDpiScaling Q_DECL_ENUMERATOR_DEPRECATED_X( + "High-DPI scaling is always enabled. " \ + "This attribute no longer has any effect.") = 21, #endif - AA_DisableHighDpiScaling = 21, AA_UseStyleSheetPropagationInWidgetStyles = 22, AA_DontUseNativeDialogs = 23, AA_SynthesizeMouseForUnhandledTabletEvents = 24, diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index b96d8e0656..b5830173f8 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -208,15 +208,6 @@ \value AA_SetPalette Indicates whether a palette was explicitly set on the QGuiApplication. This value was added in Qt 5.5. - \value AA_DisableHighDpiScaling Disables high-DPI scaling in Qt, exposing window - system coordinates. Note that the window system may do its own scaling, - so this does not guarantee that QPaintDevice::devicePixelRatio() will - be equal to 1. In addition, scale factors set by QT_SCALE_FACTOR will not - be affected. This corresponds to setting the - QT_AUTO_SCREEN\unicode{0x200b}_SCALE_FACTOR environment variable to 0. - This attribute must be set before QGuiApplication is constructed. - This value was added in Qt 5.6. - \value AA_UseStyleSheetPropagationInWidgetStyles By default, Qt Style Sheets disable regular QWidget palette and font propagation. When this flag is enabled, font and palette changes propagate as though the user had @@ -291,6 +282,7 @@ \omitvalue AA_AttributeCount \omitvalue AA_EnableHighDpiScaling \omitvalue AA_UseHighDpiPixmaps + \omitvalue AA_DisableHighDpiScaling */ /*! diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index f9bd7bb63b..9892680109 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -951,7 +951,6 @@ void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on) if (Q_UNLIKELY(QCoreApplicationPrivate::is_app_running)) { #endif switch (attribute) { - case Qt::AA_DisableHighDpiScaling: case Qt::AA_PluginApplication: case Qt::AA_UseDesktopOpenGL: case Qt::AA_UseOpenGLES: diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp index 816c3ccc4b..023e19ad9c 100644 --- a/src/gui/kernel/qhighdpiscaling.cpp +++ b/src/gui/kernel/qhighdpiscaling.cpp @@ -208,10 +208,8 @@ static inline qreal initialGlobalScaleFactor() factor based on display density information. These platforms include X11, Windows, and Android. - There are two APIs for enabling or disabling this behavior: + There is one API for enabling or disabling this behavior: - The QT_AUTO_SCREEN_SCALE_FACTOR environment variable. - - The AA_EnableHighDpiScaling and AA_DisableHighDpiScaling - application attributes Enabling either will make QHighDpiScaling call QPlatformScreen::pixelDensity() and use the value provided as the scale factor for the screen in @@ -265,9 +263,6 @@ static inline bool usePixelDensity() // reported by the platform plugin. There are several enablers and several // disablers. A single disable may veto all other enablers. - // Check if there is an explicit disable - if (QCoreApplication::testAttribute(Qt::AA_DisableHighDpiScaling)) - return false; bool screenEnvValueOk; const int screenEnvValue = qEnvironmentVariableIntValue(legacyAutoScreenEnvVar, &screenEnvValueOk); if (screenEnvValueOk && screenEnvValue < 1) @@ -488,9 +483,6 @@ void QHighDpiScaling::initHighDpiScaling() void QHighDpiScaling::updateHighDpiScaling() { - if (QCoreApplication::testAttribute(Qt::AA_DisableHighDpiScaling)) - return; - m_usePixelDensity = usePixelDensity(); if (m_usePixelDensity && !m_pixelDensityScalingActive) { diff --git a/src/testlib/doc/src/qttestlib-manual.qdoc b/src/testlib/doc/src/qttestlib-manual.qdoc index 8ff82ba28f..87ac565278 100644 --- a/src/testlib/doc/src/qttestlib-manual.qdoc +++ b/src/testlib/doc/src/qttestlib-manual.qdoc @@ -129,8 +129,7 @@ Finally, if the test class has a static public \c{void initMain()} method, it is called by the QTEST_MAIN macros before the QApplication object - is instantiated. For example, this allows for setting application - attributes like Qt::AA_DisableHighDpiScaling. This was added in 5.14. + is instantiated. This was added in 5.14. For more examples, refer to the \l{Qt Test Tutorial}. diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index fa439130d9..6c80ff3a4d 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -465,7 +465,7 @@ bool compareSequence(ActualIterator actualIt, ActualIterator actualEnd, #if defined(TESTCASE_LOWDPI) void disableHighDpi() { - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + qputenv("QT_ENABLE_HIGHDPI_SCALING", "0"); } Q_CONSTRUCTOR_FUNCTION(disableHighDpi); #endif diff --git a/tests/auto/gui/kernel/noqteventloop/tst_noqteventloop.cpp b/tests/auto/gui/kernel/noqteventloop/tst_noqteventloop.cpp index ed89e6fbb4..3e19764618 100644 --- a/tests/auto/gui/kernel/noqteventloop/tst_noqteventloop.cpp +++ b/tests/auto/gui/kernel/noqteventloop/tst_noqteventloop.cpp @@ -223,7 +223,8 @@ void tst_NoQtEventLoop::consumeMouseEvents() int argc = 1; char *argv[] = {const_cast("test")}; // ensure scaling is off since the child window is positioned using QWindow API. - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); + // FIXME: Position by taking the screen DPR into account instead + qputenv("QT_ENABLE_HIGHDPI_SCALING", "0"); QGuiApplication app(argc, argv); QString clsName(QStringLiteral("tst_NoQtEventLoop_WINDOW")); const HINSTANCE appInstance = (HINSTANCE)GetModuleHandle(0); diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp index b61faf6c2b..a751fae05d 100644 --- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp +++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp @@ -72,8 +72,6 @@ class tst_QStyleSheetStyle : public QObject public: tst_QStyleSheetStyle(); - static void initMain(); - private slots: void init(); void cleanup(); @@ -173,12 +171,6 @@ private: QSize m_testSize; }; -// highdpiImages() tests HighDPI scaling; disable initially. -void tst_QStyleSheetStyle::initMain() -{ - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); -} - tst_QStyleSheetStyle::tst_QStyleSheetStyle() { const int testSize = qMax(200, m_availableGeometry.width() / 10); @@ -2215,8 +2207,9 @@ void tst_QStyleSheetStyle::highdpiImages() w.setWindowTitle(QLatin1String(QTest::currentTestFunction()) + QLatin1String("::") + QLatin1String(QTest::currentDataTag())); QScreen *screen = QGuiApplication::primaryScreen(); + auto inverseDpr = 1 / screen->devicePixelRatio(); w.move(screen->availableGeometry().topLeft()); - QHighDpiScaling::setScreenFactor(screen, screenFactor); + QHighDpiScaling::setScreenFactor(screen, inverseDpr * screenFactor); w.setStyleSheet("QWidget { background-image: url(\":/images/testimage.png\"); }"); w.show(); diff --git a/tests/manual/embeddedintoforeignwindow/main.cpp b/tests/manual/embeddedintoforeignwindow/main.cpp index 8827b3a0a2..c8e8a4f1b5 100644 --- a/tests/manual/embeddedintoforeignwindow/main.cpp +++ b/tests/manual/embeddedintoforeignwindow/main.cpp @@ -207,9 +207,6 @@ static inline bool isOptionSet(int argc, char *argv[], const char *option) int main(int argc, char *argv[]) { - // Check for no scaling before QApplication is instantiated. - if (isOptionSet(argc, argv, "-s")) - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); QCoreApplication::setApplicationVersion(QLatin1String(QT_VERSION_STR)); QGuiApplication::setApplicationDisplayName("Foreign Window Embedding Tester"); diff --git a/tests/manual/foreignwindows/main.cpp b/tests/manual/foreignwindows/main.cpp index cc5b16391c..45c00d9b90 100644 --- a/tests/manual/foreignwindows/main.cpp +++ b/tests/manual/foreignwindows/main.cpp @@ -226,9 +226,6 @@ static inline bool isOptionSet(int argc, char *argv[], const char *option) int main(int argc, char *argv[]) { - // Check for no scaling before QApplication is instantiated. - if (isOptionSet(argc, argv, "-s")) - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); QCoreApplication::setApplicationVersion(QLatin1String(QT_VERSION_STR)); QGuiApplication::setApplicationDisplayName("Foreign window tester"); diff --git a/tests/manual/highdpi/main.cpp b/tests/manual/highdpi/main.cpp index 95036d881f..883dd5a226 100644 --- a/tests/manual/highdpi/main.cpp +++ b/tests/manual/highdpi/main.cpp @@ -1424,19 +1424,8 @@ void MetricsTest::logScreenChangeSignal(const QObject *o, const char *name, cons int main(int argc, char **argv) { -#define NOSCALINGOPTION "noscaling" - qInfo("High DPI tester %s", QT_VERSION_STR); - int preAppOptionCount = 0; - for (int a = 1; a < argc; ++a) { - if (qstrcmp(argv[a], "--" NOSCALINGOPTION) == 0) { - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); - preAppOptionCount++; - qInfo("AA_DisableHighDpiScaling"); - } - } - QApplication app(argc, argv); QCoreApplication::setApplicationVersion(QT_VERSION_STR); @@ -1449,7 +1438,6 @@ int main(int argc, char **argv) parser.addVersionOption(); QCommandLineOption controllerOption("interactive", "Show configuration window."); parser.addOption(controllerOption); - parser.addOption(QCommandLineOption(NOSCALINGOPTION, "Set AA_DisableHighDpiScaling")); DemoContainerList demoList; demoList << new DemoContainer("pixmap", "Test pixmap painter"); @@ -1478,7 +1466,7 @@ int main(int argc, char **argv) //controller takes ownership of all demos DemoController controller(demoList, &parser); - if (parser.isSet(controllerOption) || (QCoreApplication::arguments().count() - preAppOptionCount) <= 1) + if (parser.isSet(controllerOption) || (QCoreApplication::arguments().count()) <= 1) controller.show(); if (QApplication::topLevelWidgets().isEmpty()) diff --git a/tests/manual/qcursor/qcursorhighdpi/main.cpp b/tests/manual/qcursor/qcursorhighdpi/main.cpp index 2e920ab231..b7c4b95a77 100644 --- a/tests/manual/qcursor/qcursorhighdpi/main.cpp +++ b/tests/manual/qcursor/qcursorhighdpi/main.cpp @@ -338,11 +338,6 @@ int main(int argc, char *argv[]) QStringList arguments; std::copy(argv + 1, argv + argc, std::back_inserter(arguments)); -#if QT_VERSION > 0x050000 - if (arguments.contains("-n")) - QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling); -#endif // Qt 5 - QApplication app(argc, argv); MainWindowPtrList windows; -- cgit v1.2.3