summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-10-19 12:57:09 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-10-19 12:59:19 +0100
commit75544eb042ab3fc79dd6104749a32af7e180c116 (patch)
tree07400d06d84da98f2b68e190c6197f22568f74c9
parent42e89217fb3b8bda7cc084c8e14ba56efa8eae3f (diff)
Resolves: tdf#102778 by default use breeze_dark when dark themes are requested
Under gtk3 if gtk-application-prefer-dark-theme is enabled or the requested icon-theme name ends in [-|_]dark Change-Id: Ia70ea3adc51ac0ec2b26d08fc960c1c7285c338b
-rw-r--r--vcl/source/app/IconThemeSelector.cxx4
-rw-r--r--vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx15
2 files changed, 17 insertions, 2 deletions
diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx
index ce91d5b2eca2..91a082ce241c 100644
--- a/vcl/source/app/IconThemeSelector.cxx
+++ b/vcl/source/app/IconThemeSelector.cxx
@@ -82,6 +82,10 @@ IconThemeSelector::SelectIconThemeForDesktopEnvironment(
if (icon_theme_is_in_installed_themes(mPreferredIconTheme, installedThemes)) {
return mPreferredIconTheme;
}
+ //if a dark variant is preferred, and we didn't have an exact match, then try our one and only dark theme
+ if (mPreferredIconTheme.endsWith("_dark") && icon_theme_is_in_installed_themes("breeze_dark", installedThemes)) {
+ return "breeze_dark";
+ }
}
OUString themeForDesktop = GetIconThemeForDesktopEnvironment(desktopEnvironment);
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index 3d5ee0f6a434..8d6c2d0e74ac 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -2719,8 +2719,19 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
// preferred icon style
gchar* pIconThemeName = nullptr;
- g_object_get( pSettings, "gtk-icon-theme-name", &pIconThemeName, nullptr );
- aStyleSet.SetPreferredIconTheme( OUString::createFromAscii( pIconThemeName ) );
+ gboolean bDarkIconTheme = false;
+ g_object_get(pSettings, "gtk-icon-theme-name", &pIconThemeName,
+ "gtk-application-prefer-dark-theme", &bDarkIconTheme,
+ nullptr );
+ OUString sIconThemeName(OUString::createFromAscii(pIconThemeName));
+ if (sIconThemeName.endsWithIgnoreAsciiCase("-dark", &sIconThemeName) ||
+ sIconThemeName.endsWithIgnoreAsciiCase("_dark", &sIconThemeName))
+ {
+ bDarkIconTheme = true;
+ }
+ if (bDarkIconTheme)
+ sIconThemeName += "_dark";
+ aStyleSet.SetPreferredIconTheme(sIconThemeName);
g_free( pIconThemeName );
aStyleSet.SetToolbarIconSize( ToolbarIconSize::Large );