From 67739f32f747f87b1c088487517e57e7ac2e415b Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 14 Sep 2022 00:43:38 +0300 Subject: [PATCH 1/2] [win-nix] fix crash on launch with unknown theme name --- win-linux/src/cthemes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win-linux/src/cthemes.cpp b/win-linux/src/cthemes.cpp index 934036447..4abb7fbf9 100644 --- a/win-linux/src/cthemes.cpp +++ b/win-linux/src/cthemes.cpp @@ -120,7 +120,7 @@ public: g_object_unref(sett); } #endif - if ( user_theme == THEME_ID_SYSTEM ) { + if ( user_theme == THEME_ID_SYSTEM || rc_themes.find(user_theme) == rc_themes.end() ) { current = new CTheme(rc_themes.at(is_system_theme_dark ? THEME_DEFAULT_DARK_ID : THEME_DEFAULT_LIGHT_ID)); current->m_priv->is_system = true; } else current = new CTheme(rc_themes.at(user_theme)); From ea1cd18174e6a90e5645aadd6dd86a91b113b47c Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 14 Sep 2022 00:44:19 +0300 Subject: [PATCH 2/2] [win-nix] fix back compatibility with ver 7.1 --- win-linux/src/cthemes.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/win-linux/src/cthemes.cpp b/win-linux/src/cthemes.cpp index 4abb7fbf9..f5b4e6ad8 100644 --- a/win-linux/src/cthemes.cpp +++ b/win-linux/src/cthemes.cpp @@ -19,6 +19,7 @@ #define QSTRING_FROM_WSTR(s) QString::fromStdWString(s) #define REGISTRY_THEME_KEY "UITheme" +#define REGISTRY_THEME_KEY_7_2 "UITheme2" #define THEME_DEFAULT_DARK_ID "theme-dark" #define THEME_DEFAULT_LIGHT_ID "theme-classic-light" #define THEME_ID_SYSTEM "theme-system" @@ -95,7 +96,13 @@ public: }; GET_REGISTRY_USER(_reg_user); + QString user_theme = _reg_user.value(REGISTRY_THEME_KEY, THEME_ID_SYSTEM).toString(); + + /* TODO: remove for ver 7.3. for compatibility with ver 7.1 only */ + if ( _reg_user.contains(REGISTRY_THEME_KEY_7_2) ) + user_theme = _reg_user.value(REGISTRY_THEME_KEY_7_2, THEME_ID_SYSTEM).toString(); + #ifdef Q_OS_WIN QSettings _reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", QSettings::NativeFormat); is_system_theme_dark = _reg.value("AppsUseLightTheme", 1).toInt() == 0; @@ -335,7 +342,8 @@ auto CThemes::setCurrentTheme(const std::wstring& name) -> void { if ( !isThemeCurrent(name) && m_priv->setCurrent(QString::fromStdWString(name)) ) { GET_REGISTRY_USER(_reg_user); - _reg_user.setValue(REGISTRY_THEME_KEY, QString::fromStdWString(name)); +// _reg_user.setValue(REGISTRY_THEME_KEY, QString::fromStdWString(name)); + _reg_user.setValue(REGISTRY_THEME_KEY_7_2, QString::fromStdWString(name)); } }