From caa1eca947b1ff97ab96ae30a967aaccd0d23e63 Mon Sep 17 00:00:00 2001 From: Jabiertxof Date: Tue, 18 Jun 2019 04:19:27 +0200 Subject: Improving styling --- src/ui/dialog/inkscape-preferences.cpp | 11 ++++++++--- src/ui/icon-loader.cpp | 24 +++++++++++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) (limited to 'src/ui') diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index f3bba55c3..6151eeef0 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -630,7 +630,9 @@ void InkscapePreferences::symbolicThemeCheck() void InkscapePreferences::symbolicDefaultColor(){ auto const screen = Gdk::Screen::get_default(); - Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + if (INKSCAPE.colorizeprovider) { + Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + } Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool("/theme/symbolicIconsDefaultColor", true); } @@ -638,7 +640,9 @@ void InkscapePreferences::symbolicDefaultColor(){ void InkscapePreferences::symbolicStyling() { auto const screen = Gdk::Screen::get_default(); - Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + if (INKSCAPE.colorizeprovider) { + Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider); + } using namespace Inkscape::IO::Resource; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool("/theme/symbolicIconsDefaultColor", false); @@ -695,7 +699,8 @@ void InkscapePreferences::symbolicStyling() } catch (const Gtk::CssProviderError &ex) { g_critical("CSSProviderError::load_from_data(): failed to load '%s'\n(%s)", css_str.c_str(), ex.what().c_str()); } - Gtk::StyleContext::add_provider_for_screen(screen, INKSCAPE.colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + Gtk::StyleContext::add_provider_for_screen(screen, INKSCAPE.colorizeprovider, + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } void InkscapePreferences::themeChange() diff --git a/src/ui/icon-loader.cpp b/src/ui/icon-loader.cpp index f69d3148d..6853d7e68 100644 --- a/src/ui/icon-loader.cpp +++ b/src/ui/icon-loader.cpp @@ -13,6 +13,7 @@ #include "icon-loader.h" #include "inkscape.h" +#include "svg/svg-color.h" #include "widgets/toolbox.h" #include #include @@ -64,9 +65,26 @@ Glib::RefPtr sp_get_icon_pixbuf(Glib::ustring icon_name, gint size) Gtk::IconInfo iconinfo = icon_theme->lookup_icon(icon_name + Glib::ustring("-symbolic"), size, Gtk::ICON_LOOKUP_FORCE_SIZE); if (iconinfo && SP_ACTIVE_DESKTOP->getToplevel()) { bool was_symbolic = false; - Glib::RefPtr< Gtk::StyleContext > stylecontext = SP_ACTIVE_DESKTOP->getToplevel()->get_style_context(); - stylecontext->add_provider(INKSCAPE.colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - _icon_pixbuf = iconinfo.load_symbolic(stylecontext, was_symbolic); + Glib::ustring css_str = ""; + if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + gchar colornamed[64]; + gchar colornamedsuccess[64]; + gchar colornamedwarning[64]; + gchar colornamederror[64]; + gchar colornamed_inverse[64]; + int colorset = prefs->getInt("/theme/symbolicColor", 0x2E3436ff); + sp_svg_write_color(colornamed, sizeof(colornamed), colorset); + int colorsetsuccess = prefs->getInt("/theme/symbolicSuccessColor", 0x4AD589ff); + sp_svg_write_color(colornamedsuccess, sizeof(colornamedsuccess), colorsetsuccess); + int colorsetwarning = prefs->getInt("/theme/symbolicWarningColor", 0xF57900ff); + sp_svg_write_color(colornamedwarning, sizeof(colornamedwarning), colorsetwarning); + int colorseterror = prefs->getInt("/theme/symbolicErrorColor", 0xcc0000ff); + sp_svg_write_color(colornamederror, sizeof(colornamederror), colorseterror); + _icon_pixbuf = iconinfo.load_symbolic(Gdk::RGBA(colornamed), Gdk::RGBA(colornamedsuccess), Gdk::RGBA(colornamedwarning), Gdk::RGBA(colornamederror), was_symbolic); + } else { + Glib::RefPtr stylecontext = SP_ACTIVE_DESKTOP->getToplevel()->get_style_context(); + _icon_pixbuf = iconinfo.load_symbolic(stylecontext, was_symbolic); + } } else { Gtk::IconInfo iconinfo = icon_theme->lookup_icon(icon_name, size, Gtk::ICON_LOOKUP_FORCE_SIZE); _icon_pixbuf = iconinfo.load_icon(); -- cgit v1.2.3