macOS: By default use dark theme in system dark mode

Like already done for Windows.

Change-Id: I7919ecb92da5d4baeedf2068f09c341d39728ecc
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Eike Ziller
2021-10-25 17:00:44 +02:00
parent d977db303d
commit 74e29eaa26
3 changed files with 26 additions and 0 deletions

View File

@@ -79,6 +79,16 @@ static void maybeForceMacOSLight(Theme *theme)
#endif
}
static bool macOSSystemIsDark()
{
#ifdef Q_OS_MACOS
static bool systemIsDark = Internal::currentAppearanceIsDark();
return systemIsDark;
#else
return false;
#endif
}
void setCreatorTheme(Theme *theme)
{
if (m_creatorTheme == theme)
@@ -257,6 +267,8 @@ bool Theme::systemUsesDarkMode()
bool ok;
const auto setting = QSettings(regkey, QSettings::NativeFormat).value("AppsUseLightTheme").toInt(&ok);
return ok && setting == 0;
} else if (HostOsInfo::isMacHost()) {
return macOSSystemIsDark();
}
return false;
}
@@ -278,6 +290,7 @@ static QPalette copyPalette(const QPalette &p)
void Theme::setInitialPalette(Theme *initTheme)
{
macOSSystemIsDark(); // initialize value for system mode
maybeForceMacOSLight(initTheme);
initialPalette();
}

View File

@@ -29,6 +29,7 @@ namespace Utils {
namespace Internal {
void forceMacOSLightAquaApperance();
bool currentAppearanceIsDark();
} // Internal
} // Utils

View File

@@ -49,5 +49,17 @@ void forceMacOSLightAquaApperance()
NSApp.appearance = [NSAppearance appearanceNamed:NSAppearanceNameAqua];
}
bool currentAppearanceIsDark()
{
#if __has_builtin(__builtin_available)
if (__builtin_available(macOS 10.14, *)) {
auto appearance = [NSApp.effectiveAppearance
bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]];
return [appearance isEqualToString:NSAppearanceNameDarkAqua];
}
#endif
return false;
}
} // Internal
} // Utils