From df47fdb8563452a1e68d4ec6d7c6eb36e7a9d353 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Tue, 11 Jul 2017 01:44:33 -0700 Subject: Pick the default style name at runtime instead of compile time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of a naïve OS-based compile time check, we check which platform plugin is in use at runtime. This should give a more accurate mapping, especially on desktop OSes using alternative platform plugins where the Desktop style is not useful. The minimum Android SDK version is 16 now, so the check is removed. Change-Id: Ie7af3a8ce5fd031256f5eba9706f24ab50a23bf9 Reviewed-by: Gabriel de Dietrich --- src/controls/Private/qquickcontrolsettings.cpp | 36 +++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/controls/Private/qquickcontrolsettings.cpp b/src/controls/Private/qquickcontrolsettings.cpp index d8cfdaed..95c656b2 100644 --- a/src/controls/Private/qquickcontrolsettings.cpp +++ b/src/controls/Private/qquickcontrolsettings.cpp @@ -58,19 +58,31 @@ QT_BEGIN_NAMESPACE static QString defaultStyleName() { - //Only enable QStyle support when we are using QApplication -#if defined(QT_WIDGETS_LIB) && !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY) && !defined(Q_OS_QNX) && !defined(Q_OS_WINRT) - if (QCoreApplication::instance()->inherits("QApplication")) - return QLatin1String("Desktop"); -#elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) - if (QtAndroidPrivate::androidSdkVersion() >= 11) - return QLatin1String("Android"); -#elif defined(Q_OS_IOS) - return QLatin1String("iOS"); -#elif defined(Q_OS_WINRT) && 0 // Enable once style is ready - return QLatin1String("WinRT"); + static const QMap styleMap { +#if defined(QT_WIDGETS_LIB) + {QLatin1String("cocoa"), QLatin1String("Desktop")}, + {QLatin1String("wayland"), QLatin1String("Desktop")}, + {QLatin1String("windows"), QLatin1String("Desktop")}, + {QLatin1String("xcb"), QLatin1String("Desktop")}, #endif - return QLatin1String("Base"); + {QLatin1String("android"), QLatin1String("Android")}, + {QLatin1String("ios"), QLatin1String("iOS")}, +#if 0 // Enable once style is ready + {QLatin1String("winrt"), QLatin1String("WinRT")}, +#endif + }; + + QGuiApplication *app = static_cast( + QCoreApplication::instance()); + const QString styleName = styleMap.value(app->platformName(), QLatin1String("Base")); + +#if defined(QT_WIDGETS_LIB) + // Only enable QStyle support when we are using QApplication + if (styleName == QLatin1String("Desktop") && !app->inherits("QApplication")) + return QLatin1String("Base"); +#endif + + return styleName; } static QString styleEnvironmentVariable() -- cgit v1.2.1