Gui: Fix order of stylesheet applying

This commit is contained in:
Kacper Donat
2025-09-07 00:52:05 +02:00
committed by Chris Hennes
parent 08aeb5d65b
commit a09de19764
6 changed files with 13 additions and 42 deletions

View File

@@ -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<StyleParameters::ParameterSource>(
new StyleParameters::BuiltInParameterSource({.name = QT_TR_NOOP("Built-in Parameters")}));

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -205,32 +205,5 @@ void DlgSettingsUI::changeEvent(QEvent *e)
}
}
namespace {
void applyStyleSheet(ParameterGrp *hGrp)
{
if (auto parameterManager = Base::provideService<Gui::StyleParameters::ParameterManager>()) {
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"

View File

@@ -51,8 +51,6 @@ public:
void loadStyleSheet();
static void attachObserver();
protected:
void changeEvent(QEvent *e) override;

View File

@@ -87,7 +87,6 @@ WidgetFactorySupplier::WidgetFactorySupplier()
new PrefPageProducer<DlgSettingsNavigation> ( QT_TRANSLATE_NOOP("QObject","Display") );
new PrefPageProducer<DlgSettingsViewColor> ( QT_TRANSLATE_NOOP("QObject","Display") );
new PrefPageProducer<DlgSettingsAdvanced> ( QT_TRANSLATE_NOOP("QObject","Display") );
DlgSettingsUI::attachObserver();
new PrefPageProducer<DlgSettingsWorkbenchesImp> ( QT_TRANSLATE_NOOP("QObject","Workbenches") );
new PrefPageProducer<DlgSettingsPDF> ( QT_TRANSLATE_NOOP("QObject","Import-Export") );
new PrefPageProducer<DlgSettingsMacroImp> ( QT_TRANSLATE_NOOP("QObject", "Python"));