From 57120e0c9de98caf1cd4eadb97d7e91fb9dd1834 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 23 Mar 2025 14:17:43 +0000 Subject: [PATCH 1/2] Use correct colours for all system themes Signed-off-by: TheKodeToad (cherry picked from commit f08478c7ece0cd4e13b0bc188d0dcb9ea04c3199) --- launcher/ui/themes/SystemTheme.cpp | 16 ++-------------- launcher/ui/themes/SystemTheme.h | 3 +-- launcher/ui/themes/ThemeManager.cpp | 6 ++---- launcher/ui/themes/ThemeManager.h | 1 - 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index a1674455a..31f6a96ab 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -40,23 +40,11 @@ #include "HintOverrideProxyStyle.h" #include "ThemeManager.h" -SystemTheme::SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme) +SystemTheme::SystemTheme(const QString& styleName, bool isDefaultTheme) { themeName = isDefaultTheme ? "system" : styleName; widgetTheme = styleName; - colorPalette = palette; -} - -void SystemTheme::apply(bool initial) -{ - // See https://github.com/MultiMC/Launcher/issues/1790 - // or https://github.com/PrismLauncher/PrismLauncher/issues/490 - if (initial) { - QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme()))); - return; - } - - ITheme::apply(initial); + colorPalette = QStyleFactory::create(styleName)->standardPalette(); } QString SystemTheme::id() diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 7c260fdc4..195b8e368 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -38,9 +38,8 @@ class SystemTheme : public ITheme { public: - SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme); + SystemTheme(const QString& styleName, bool isDefaultTheme); virtual ~SystemTheme() {} - void apply(bool initial) override; QString id() override; QString name() override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 30a1fe7be..6c50d7409 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -44,8 +44,6 @@ ThemeManager::ThemeManager() m_defaultStyle = style->objectName(); themeDebugLog() << "System theme seems to be:" << m_defaultStyle; - m_defaultPalette = QApplication::palette(); - initializeThemes(); initializeCatPacks(); } @@ -128,7 +126,7 @@ void ThemeManager::initializeIcons() void ThemeManager::initializeWidgets() { themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_defaultStyle, m_defaultPalette, true)); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_defaultStyle, true)); auto darkThemeId = addTheme(std::make_unique()); themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); @@ -141,7 +139,7 @@ void ThemeManager::initializeWidgets() continue; } #endif - themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st, m_defaultPalette, false)); + themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st, false)); } // TODO: need some way to differentiate same name themes in different subdirectories diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index a9036107c..9c9e818e5 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -69,7 +69,6 @@ class ThemeManager { QDir m_catPacksFolder{ "catpacks" }; std::map> m_catPacks; QString m_defaultStyle; - QPalette m_defaultPalette; LogColors m_logColors; void initializeThemes(); From d0a77df703ba72839bc1458a0cc4af96d10cde1a Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 23 Mar 2025 14:29:58 +0000 Subject: [PATCH 2/2] Try best to avoid regression Signed-off-by: TheKodeToad (cherry picked from commit 513959750f23719b55030cd34b9a8f5b248289c5) --- launcher/ui/themes/SystemTheme.cpp | 12 ++++++++++++ launcher/ui/themes/SystemTheme.h | 1 + 2 files changed, 13 insertions(+) diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index 31f6a96ab..59644ddde 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -47,6 +47,18 @@ SystemTheme::SystemTheme(const QString& styleName, bool isDefaultTheme) colorPalette = QStyleFactory::create(styleName)->standardPalette(); } +void SystemTheme::apply(bool initial) +{ + // See https://github.com/MultiMC/Launcher/issues/1790 + // or https://github.com/PrismLauncher/PrismLauncher/issues/490 + if (initial && themeName == "system") { + QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme()))); + return; + } + + ITheme::apply(initial); +} + QString SystemTheme::id() { return themeName; diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 195b8e368..09db1a322 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -40,6 +40,7 @@ class SystemTheme : public ITheme { public: SystemTheme(const QString& styleName, bool isDefaultTheme); virtual ~SystemTheme() {} + void apply(bool initial) override; QString id() override; QString name() override;