diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-10-19 12:57:09 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-10-19 12:59:19 +0100 |
commit | 75544eb042ab3fc79dd6104749a32af7e180c116 (patch) | |
tree | 07400d06d84da98f2b68e190c6197f22568f74c9 | |
parent | 42e89217fb3b8bda7cc084c8e14ba56efa8eae3f (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.cxx | 4 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 15 |
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 ); |