Gui: Fix order of stylesheet applying
This commit is contained in:
committed by
Chris Hennes
parent
08aeb5d65b
commit
a09de19764
@@ -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")}));
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -51,8 +51,6 @@ public:
|
||||
|
||||
void loadStyleSheet();
|
||||
|
||||
static void attachObserver();
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent *e) override;
|
||||
|
||||
|
||||
@@ -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"));
|
||||
|
||||
Reference in New Issue
Block a user