forked from qt-creator/qt-creator
Theme: Use dark theme by default on dark windows
Change-Id: Ieb024e01adfdce1c37948097bae85fa2488ee341 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
#include "theme.h"
|
||||
#include "theme_p.h"
|
||||
#include "../algorithm.h"
|
||||
#include "../hostosinfo.h"
|
||||
#include "../qtcassert.h"
|
||||
#ifdef Q_OS_MACOS
|
||||
#import "theme_mac.h"
|
||||
@@ -242,6 +243,18 @@ void Theme::readSettings(QSettings &settings)
|
||||
}
|
||||
}
|
||||
|
||||
bool Theme::systemUsesDarkMode()
|
||||
{
|
||||
if (HostOsInfo::isWindowsHost()) {
|
||||
constexpr char regkey[]
|
||||
= "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
|
||||
bool ok;
|
||||
const auto setting = QSettings(regkey, QSettings::NativeFormat).value("AppsUseLightTheme").toInt(&ok);
|
||||
return ok && setting == 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// If you copy QPalette, default values stay at default, even if that default is different
|
||||
// within the context of different widgets. Create deep copy.
|
||||
static QPalette copyPalette(const QPalette &p)
|
||||
|
@@ -394,6 +394,7 @@ public:
|
||||
|
||||
void readSettings(QSettings &settings);
|
||||
|
||||
static bool systemUsesDarkMode();
|
||||
static QPalette initialPalette();
|
||||
|
||||
protected:
|
||||
|
@@ -220,6 +220,7 @@ const char SETTINGS_DEFAULT_LINE_TERMINATOR[] = "General/DefaultLineTerminator";
|
||||
|
||||
const char SETTINGS_THEME[] = "Core/CreatorTheme";
|
||||
const char DEFAULT_THEME[] = "flat";
|
||||
const char DEFAULT_DARK_THEME[] = "flat-dark";
|
||||
|
||||
const char TR_CLEAR_MENU[] = QT_TRANSLATE_NOOP("Core", "Clear Menu");
|
||||
|
||||
|
@@ -225,9 +225,10 @@ QList<ThemeEntry> ThemeEntry::availableThemes()
|
||||
|
||||
Id ThemeEntry::themeSetting()
|
||||
{
|
||||
const Id setting =
|
||||
Id::fromSetting(ICore::settings()->value(QLatin1String(Constants::SETTINGS_THEME),
|
||||
QLatin1String(Constants::DEFAULT_THEME)));
|
||||
auto defaultId = Theme::systemUsesDarkMode() ? Constants::DEFAULT_DARK_THEME
|
||||
: Constants::DEFAULT_THEME;
|
||||
const Id setting = Id::fromSetting(
|
||||
ICore::settings()->value(Constants::SETTINGS_THEME, defaultId));
|
||||
|
||||
const QList<ThemeEntry> themes = availableThemes();
|
||||
if (themes.empty())
|
||||
|
Reference in New Issue
Block a user