diff --git a/kded/configeditor.cpp b/kded/configeditor.cpp --- a/kded/configeditor.cpp +++ b/kded/configeditor.cpp @@ -138,6 +138,7 @@ QStringLiteral("Gtk/ButtonImages"), QStringLiteral("Gtk/MenuImages"), QStringLiteral("Gtk/ToolbarStyle"), + QStringLiteral("Gtk/PrimaryButtonWarpsSlider"), }; QString newConfigString; diff --git a/kded/configvalueprovider.h b/kded/configvalueprovider.h --- a/kded/configvalueprovider.h +++ b/kded/configvalueprovider.h @@ -42,6 +42,7 @@ QString iconsOnButtons() const; QString iconsInMenus() const; QString toolbarStyle(ToolbarStyleNotation notation) const; + QString scrollbarBehavior() const; private: QString toolbarStyleInDesiredNotation(const QString &kdeConfigValue, ToolbarStyleNotation notation) const; diff --git a/kded/configvalueprovider.cpp b/kded/configvalueprovider.cpp --- a/kded/configvalueprovider.cpp +++ b/kded/configvalueprovider.cpp @@ -98,6 +98,18 @@ 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 + return QStringLiteral("0"); + } else { + return QStringLiteral("1"); + } +} + QString ConfigValueProvider::toolbarStyleInDesiredNotation(const QString &kdeConfigValue, ConfigValueProvider::ToolbarStyleNotation notation) const { QStringList toolbarStyles {}; diff --git a/kded/gtkconfig.h b/kded/gtkconfig.h --- a/kded/gtkconfig.h +++ b/kded/gtkconfig.h @@ -62,6 +62,7 @@ void setIconsOnButtons() const; void setIconsInMenus() const; void setToolbarStyle() const; + void setScrollbarBehavior() const; void applyAllSettings() const; diff --git a/kded/gtkconfig.cpp b/kded/gtkconfig.cpp --- a/kded/gtkconfig.cpp +++ b/kded/gtkconfig.cpp @@ -107,14 +107,23 @@ ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/ToolbarStyle"), toolbarStyleXSettingsd); } +void GtkConfig::setScrollbarBehavior() const +{ + const QString scrollbarBehavior = configValueProvider->scrollbarBehavior(); + ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-primary-button-warps-slider"), scrollbarBehavior); + ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-primary-button-warps-slider"), scrollbarBehavior); + ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/PrimaryButtonWarpsSlider"), scrollbarBehavior); +} + void GtkConfig::applyAllSettings() const { setFont(); setIconTheme(KIconLoader::Group::Desktop); setCursorTheme(); setIconsOnButtons(); setIconsInMenus(); setToolbarStyle(); + setScrollbarBehavior(); } void GtkConfig::onGlobalSettingsChange(int settingsChangeType, int arg) const @@ -128,6 +137,8 @@ setIconsOnButtons(); setIconsInMenus(); setToolbarStyle(); + } else if (changeType == SettingsChangeType::Settings && settingsCategory == SettingsCategory::Mouse) { + setScrollbarBehavior(); } }