summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-05-19 11:08:50 +0100
committerAdolfo Jayme Barrientos <fitojb@ubuntu.com>2022-05-19 23:49:19 +0200
commit4aef8133f522be2f2d51456990cd64faaa90d080 (patch)
treedd3b1a8f0fa2e840124f2342924785757b69cd89
parenta309c671b5f7ac536d7624a2bbc95e23f19bb42d (diff)
icon-theme not dynamically changing to match desktop if set to 'auto'
Change-Id: Id5700cff1000fe4b6df6e73c1ce9ff4f206e0a96 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134613 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
-rw-r--r--vcl/inc/IconThemeSelector.hxx3
-rw-r--r--vcl/source/app/IconThemeSelector.cxx13
-rw-r--r--vcl/source/app/settings.cxx9
3 files changed, 19 insertions, 6 deletions
diff --git a/vcl/inc/IconThemeSelector.hxx b/vcl/inc/IconThemeSelector.hxx
index 7e2dfc0da1dd..8dab03d3a8d2 100644
--- a/vcl/inc/IconThemeSelector.hxx
+++ b/vcl/inc/IconThemeSelector.hxx
@@ -62,7 +62,8 @@ public:
void
SetUseHighContrastTheme(bool);
- void
+ /** Returns true if the PreferredIconTheme was changed */
+ bool
SetPreferredIconTheme(const OUString&, bool bDarkIconTheme);
bool
diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx
index 253242bcd5ad..5abb7b29d5df 100644
--- a/vcl/source/app/IconThemeSelector.cxx
+++ b/vcl/source/app/IconThemeSelector.cxx
@@ -124,13 +124,20 @@ IconThemeSelector::SetUseHighContrastTheme(bool v)
mUseHighContrastTheme = v;
}
-void
+bool
IconThemeSelector::SetPreferredIconTheme(const OUString& theme, bool bDarkIconTheme)
{
// lower case theme name, and (tdf#120175) replace - with _
// see icon-themes/README
- mPreferredIconTheme = theme.toAsciiLowerCase().replace('-','_');
- mPreferDarkIconTheme = bDarkIconTheme;
+ OUString sIconTheme = theme.toAsciiLowerCase().replace('-','_');
+
+ const bool bChanged = mPreferredIconTheme != sIconTheme || mPreferDarkIconTheme != bDarkIconTheme;
+ if (bChanged)
+ {
+ mPreferredIconTheme = sIconTheme;
+ mPreferDarkIconTheme = bDarkIconTheme;
+ }
+ return bChanged;
}
bool
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 0e64a4269e35..186013ebc999 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -184,7 +184,7 @@ struct ImplStyleData
std::shared_ptr<vcl::IconThemeSelector>
mIconThemeSelector;
- OUString mIconTheme;
+ OUString mIconTheme;
bool mbSkipDisabledInMenus;
bool mbHideDisabledMenuItems;
bool mbPreferredContextMenuShortcuts;
@@ -3139,7 +3139,12 @@ StyleSettings::GetHighContrastMode() const
void
StyleSettings::SetPreferredIconTheme(const OUString& theme, bool bDarkIconTheme)
{
- mxData->mIconThemeSelector->SetPreferredIconTheme(theme, bDarkIconTheme);
+ const bool bChanged = mxData->mIconThemeSelector->SetPreferredIconTheme(theme, bDarkIconTheme);
+ if (bChanged)
+ {
+ // clear this so it is recalculated if it was selected as the automatic theme
+ mxData->mIconTheme.clear();
+ }
}
void