diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 8bc512c080..a6f49ddddb 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -402,14 +402,23 @@ void Application::initStyleParameterManager() {.name = QT_TR_NOOP("Theme Parameters"), .options = StyleParameters::ParameterSourceOption::UserEditable}); - handlers.addDelayedHandler( + auto reloadStylesheetHandler = handlers.addDelayedHandler( "BaseApp/Preferences/MainWindow", - {"ThemeStyleParametersFiles", "Theme"}, - [themeParametersSource, deduceParametersFilePath, this](ParameterGrp::handle) { + {"ThemeStyleParametersFiles", "Theme", "StyleSheet"}, + [themeParametersSource, deduceParametersFilePath, this](ParameterGrp::handle hGrp) { themeParametersSource->changeFilePath(deduceParametersFilePath()); - reloadStyleSheet(); + styleParameterManager()->reload(); + + std::string sheet = hGrp->GetASCII("StyleSheet"); + bool tiledBG = hGrp->GetBool("TiledBackground", false); + + setStyleSheet(QString::fromStdString(sheet), tiledBG); }); + handlers.addHandler("BaseApp/Preferences/Themes", + {"ThemeAccentColor1", "ThemeAccentColor2", "ThemeAccentColor2"}, + reloadStylesheetHandler); + Base::registerServiceImplementation( new StyleParameters::BuiltInParameterSource({.name = QT_TR_NOOP("Built-in Parameters")})); diff --git a/src/Gui/PreferencePackManager.cpp b/src/Gui/PreferencePackManager.cpp index 83882aca25..5a37deeab1 100644 --- a/src/Gui/PreferencePackManager.cpp +++ b/src/Gui/PreferencePackManager.cpp @@ -361,9 +361,6 @@ bool PreferencePackManager::apply(const std::string& preferencePackName) const Gui::ToolBarManager* pToolbarMgr = Gui::ToolBarManager::getInstance(); pToolbarMgr->restoreState(); - // We need to reload stylesheet to apply any changed style parameters - Gui::Application::Instance->reloadStyleSheet(); - // TODO: Are there other things that have to be manually triggered? } return wasApplied; diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index 564338af49..dbe7866456 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -406,11 +406,6 @@ void DlgSettingsGeneral::saveThemes() } } - // Set the StyleSheet - QString sheet = QString::fromStdString(hGrp->GetASCII("StyleSheet")); - bool tiledBackground = hGrp->GetBool("TiledBackground", false); - Application::Instance->setStyleSheet(sheet, tiledBackground); - themeChanged = false; } diff --git a/src/Gui/PreferencePages/DlgSettingsUI.cpp b/src/Gui/PreferencePages/DlgSettingsUI.cpp index be12ded5a4..7c467eeacc 100644 --- a/src/Gui/PreferencePages/DlgSettingsUI.cpp +++ b/src/Gui/PreferencePages/DlgSettingsUI.cpp @@ -205,32 +205,5 @@ void DlgSettingsUI::changeEvent(QEvent *e) } } -namespace { - -void applyStyleSheet(ParameterGrp *hGrp) -{ - if (auto parameterManager = Base::provideService()) { - parameterManager->reload(); - } - - auto sheet = hGrp->GetASCII("StyleSheet"); - bool tiledBG = hGrp->GetBool("TiledBackground", false); - Gui::Application::Instance->setStyleSheet(QString::fromUtf8(sheet.c_str()), tiledBG); -} - -} // anonymous namespace - -void DlgSettingsUI::attachObserver() -{ - static ParamHandlers handlers; - - auto handler = handlers.addDelayedHandler("BaseApp/Preferences/MainWindow", - {"StyleSheet", "TiledBackground"}, - applyStyleSheet); - handlers.addHandler("BaseApp/Preferences/Themes", - {"ThemeAccentColor1", "ThemeAccentColor2", "ThemeAccentColor2"}, - handler); -} - #include "moc_DlgSettingsUI.cpp" diff --git a/src/Gui/PreferencePages/DlgSettingsUI.h b/src/Gui/PreferencePages/DlgSettingsUI.h index 37030b5c4b..c93207b046 100644 --- a/src/Gui/PreferencePages/DlgSettingsUI.h +++ b/src/Gui/PreferencePages/DlgSettingsUI.h @@ -51,8 +51,6 @@ public: void loadStyleSheet(); - static void attachObserver(); - protected: void changeEvent(QEvent *e) override; diff --git a/src/Gui/resource.cpp b/src/Gui/resource.cpp index 31fc73251a..3a142e39a5 100644 --- a/src/Gui/resource.cpp +++ b/src/Gui/resource.cpp @@ -87,7 +87,6 @@ WidgetFactorySupplier::WidgetFactorySupplier() new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); - DlgSettingsUI::attachObserver(); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Workbenches") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Import-Export") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject", "Python"));