diff --git a/kded/configvalueprovider.cpp b/kded/configvalueprovider.cpp --- a/kded/configvalueprovider.cpp +++ b/kded/configvalueprovider.cpp @@ -41,7 +41,6 @@ { static const QFont defaultFont(QStringLiteral("Noto Sans"), 10); - kdeglobalsConfig->reparseConfiguration(); KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("General")); QString fontAsString = configGroup.readEntry(QStringLiteral("font"), defaultFont.toString()); static QFont font; @@ -114,24 +113,18 @@ QString ConfigValueProvider::iconThemeName() const { - KIconTheme *newIconTheme = KIconLoader::global()->theme(); - if (newIconTheme) { - return newIconTheme->internalName(); - } else { - return QStringLiteral("breeze"); - } + KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("Icons")); + return configGroup.readEntry(QStringLiteral("Theme"), QStringLiteral("breeze")); } QString ConfigValueProvider::cursorThemeName() const { - inputConfig->reparseConfiguration(); KConfigGroup configGroup = inputConfig->group(QStringLiteral("Mouse")); return configGroup.readEntry(QStringLiteral("cursorTheme"), QStringLiteral("breeze_cursors")); } QString ConfigValueProvider::iconsOnButtons() const { - kdeglobalsConfig->reparseConfiguration(); KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE")); bool kdeConfigValue = configGroup.readEntry(QStringLiteral("ShowIconsOnPushButtons"), true); @@ -144,7 +137,6 @@ QString ConfigValueProvider::iconsInMenus() const { - kdeglobalsConfig->reparseConfiguration(); KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE")); bool kdeConfigValue = configGroup.readEntry(QStringLiteral("ShowIconsInMenuItems"), true); @@ -157,15 +149,13 @@ QString ConfigValueProvider::toolbarStyle(ConfigValueProvider::ToolbarStyleNotation notation) const { - kdeglobalsConfig->reparseConfiguration(); KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("Toolbar style")); QString kdeConfigValue = configGroup.readEntry(QStringLiteral("ToolButtonStyle"), "TextBesideIcon"); return toolbarStyleInDesiredNotation(kdeConfigValue, notation); } QString ConfigValueProvider::scrollbarBehavior() const { - kdeglobalsConfig->reparseConfiguration(); KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE")); bool kdeConfigValue = configGroup.readEntry(QStringLiteral("ScrollbarLeftClickNavigatesByPage"), true); if (kdeConfigValue) { // GTK setting is inverted @@ -177,7 +167,6 @@ QString ConfigValueProvider::preferDarkTheme() const { - kdeglobalsConfig->reparseConfiguration(); KConfigGroup colorsConfigGroup = kdeglobalsConfig->group(QStringLiteral("Colors:Window")); QColor windowBackgroundColor = colorsConfigGroup.readEntry(QStringLiteral("BackgroundNormal"), QColor(239, 240, 241)); const int windowBackgroundGray = qGray(windowBackgroundColor.rgb()); @@ -192,7 +181,6 @@ QString ConfigValueProvider::windowDecorationsButtonsOrder() const { - kwinConfig->reparseConfiguration(); KConfigGroup configGroup = kwinConfig->group(QStringLiteral("org.kde.kdecoration2")); QString buttonsOnLeftKdeConfigValue = configGroup.readEntry(QStringLiteral("ButtonsOnLeft"), "MS"); QString buttonsOnRightKdeConfigValue = configGroup.readEntry(QStringLiteral("ButtonsOnRight"), "HIAX"); diff --git a/kded/gtkconfig.h b/kded/gtkconfig.h --- a/kded/gtkconfig.h +++ b/kded/gtkconfig.h @@ -33,35 +33,12 @@ Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.kde.GtkConfig") - enum class SettingsChangeType { - Palette = 0, - Font, - Style, - Settings, - Icon, - Cursor, - ToolbarStyle, - BlockShortcuts, - NaturalSorting - }; - - enum class SettingsCategory { - Mouse, - Completion, - Paths, - Popupmenu, - Qt, - Shortcuts, - Locale, - Style - }; - public: GtkConfig(QObject *parent, const QVariantList& args); ~GtkConfig(); void setFont() const; - void setIconTheme(int iconGroup) const; + void setIconTheme() const; void setCursorTheme() const; void setIconsOnButtons() const; void setIconsInMenus() const; @@ -83,7 +60,6 @@ Q_SCRIPTABLE void showGtk2ThemePreview(const QString &themeName) const; Q_SCRIPTABLE void showGtk3ThemePreview(const QString &themeName) const; - void onGlobalSettingsChange(int settingsChangeType, int arg) const; void onKdeglobalsSettingsChange(const KConfigGroup &group, const QByteArrayList &names) const; void onKWinSettingsChange(const KConfigGroup &group, const QByteArrayList &names) const; void onKCMInputSettingsChange(const KConfigGroup &group, const QByteArrayList &names) const; diff --git a/kded/gtkconfig.cpp b/kded/gtkconfig.cpp --- a/kded/gtkconfig.cpp +++ b/kded/gtkconfig.cpp @@ -46,19 +46,9 @@ dbus.registerService(QStringLiteral("org.kde.GtkConfig")); dbus.registerObject(QStringLiteral("/GtkConfig"), this, QDBusConnection::ExportScriptableSlots); - connect(qGuiApp, &QGuiApplication::fontChanged, this, &GtkConfig::setFont); - connect(KIconLoader::global(), &KIconLoader::iconChanged, this, &GtkConfig::setIconTheme); connect(kdeglobalsConfigWatcher.data(), &KConfigWatcher::configChanged, this, &GtkConfig::onKdeglobalsSettingsChange); connect(kwinConfigWatcher.data(), &KConfigWatcher::configChanged, this, &GtkConfig::onKWinSettingsChange); connect(kcminputConfigWatcher.data(), &KConfigWatcher::configChanged, this, &GtkConfig::onKCMInputSettingsChange); - dbus.connect( - QString(), - QStringLiteral("/KGlobalSettings"), - QStringLiteral("org.kde.KGlobalSettings"), - QStringLiteral("notifyChange"), - this, - SLOT(onGlobalSettingsChange(int,int)) - ); ConfigEditor::removeLegacyGtk2Strings(); applyAllSettings(); @@ -112,15 +102,13 @@ ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/FontName"), configFontName); } -void GtkConfig::setIconTheme(int iconGroup) const +void GtkConfig::setIconTheme() const { - if (iconGroup == KIconLoader::Group::Desktop) { // This is needed to update icons only once - const QString iconThemeName = configValueProvider->iconThemeName(); - ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-icon-theme-name"), iconThemeName); - ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("icon-theme"), iconThemeName); - ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-icon-theme-name"), iconThemeName); - ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/IconThemeName"), iconThemeName); - } + const QString iconThemeName = configValueProvider->iconThemeName(); + ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-icon-theme-name"), iconThemeName); + ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("icon-theme"), iconThemeName); + ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-icon-theme-name"), iconThemeName); + ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/IconThemeName"), iconThemeName); } void GtkConfig::setCursorTheme() const @@ -197,7 +185,7 @@ void GtkConfig::applyAllSettings() const { setFont(); - setIconTheme(KIconLoader::Group::Desktop); + setIconTheme(); setCursorTheme(); setIconsOnButtons(); setIconsInMenus(); @@ -208,27 +196,36 @@ setEnableAnimations(); } -void GtkConfig::onGlobalSettingsChange(int settingsChangeType, int arg) const -{ - SettingsChangeType changeType = static_cast(settingsChangeType); - SettingsCategory settingsCategory = static_cast(arg); - - if (changeType == SettingsChangeType::Settings && settingsCategory == SettingsCategory::Style) { - setIconsOnButtons(); - setIconsInMenus(); - setToolbarStyle(); - } else if (changeType == SettingsChangeType::Settings && settingsCategory == SettingsCategory::Mouse) { - setScrollbarBehavior(); - } else if (changeType == SettingsChangeType::Palette) { - setDarkThemePreference(); - } -} - void GtkConfig::onKdeglobalsSettingsChange(const KConfigGroup &group, const QByteArrayList &names) const { - if (group.name() == QLatin1String("KDE") - && names.contains(QByteArrayLiteral("AnimationDurationFactor"))) { - setEnableAnimations(); + if (group.name() == QStringLiteral("KDE")) { + if (names.contains(QByteArrayLiteral("AnimationDurationFactor"))) { + setEnableAnimations(); + } + if (names.contains(QByteArrayLiteral("ShowIconsInMenuItems"))) { + setIconsInMenus(); + } + if (names.contains(QByteArrayLiteral("ShowIconsOnPushButtons"))) { + setIconsOnButtons(); + } + if (names.contains(QByteArrayLiteral("ScrollbarLeftClickNavigatesByPage"))) { + setScrollbarBehavior(); + } + } else if (group.name() == QStringLiteral("Icons")) { + if (names.contains(QByteArrayLiteral("Theme"))) { + setIconTheme(); + } + } else if (group.name() == QStringLiteral("General")) { + if (names.contains(QByteArrayLiteral("font"))) { + setFont(); + } + if (names.contains(QByteArrayLiteral("ColorScheme"))) { + setDarkThemePreference(); + } + } else if (group.name() == QStringLiteral("Toolbar style")) { + if (names.contains(QByteArrayLiteral("ToolButtonStyle"))) { + setToolbarStyle(); + } } }