diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-26 19:55:22 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-26 19:55:22 +0000 |
| commit | 61a033d08452b31a19ab166b1a1bfe1c05cd1f58 (patch) | |
| tree | 14412187a4ab47eb37ed792e177f163a505aeba7 /src | |
| parent | RectToolbar: GtkAction migration (first pass) (diff) | |
| parent | Add 'Theme Decide' option to symbolic icons color (diff) | |
| download | inkscape-61a033d08452b31a19ab166b1a1bfe1c05cd1f58.tar.gz inkscape-61a033d08452b31a19ab166b1a1bfe1c05cd1f58.zip | |
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src')
| -rw-r--r-- | src/inkscape.cpp | 23 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 45 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.h | 1 |
3 files changed, 57 insertions, 12 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp index c63bc854c..1418f5c3b 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -386,14 +386,21 @@ Application::add_gtk_css() int colorset_inverse = colorset ^ 0xffffff00; gchar colornamed_inverse[64]; sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse); - css_str += "*{ -gtk-icon-style: symbolic;}"; - css_str += "image{ color:"; - css_str += colornamed; - css_str += ";}"; - css_str += "#iconinverse{ color:"; - css_str += colornamed_inverse; - css_str += ";}"; - css_str += "#iconregular{ -gtk-icon-style: regular;}"; + if (prefs->getBool("/theme/symbolicIconsDefaultColor", true)) { + css_str += "*{ -gtk-icon-style: symbolic;}"; + css_str += "image{ color: @theme_fg_color}"; + css_str += "iconinverse{ color: @theme_bg_color;}"; + css_str += "iconregular{ -gtk-icon-style: regular;}"; + } else { + css_str += "*{ -gtk-icon-style: symbolic;}"; + css_str += "image{ color:"; + css_str += colornamed; + css_str += ";}"; + css_str += "#iconinverse{ color:"; + css_str += colornamed_inverse; + css_str += ";}"; + css_str += "#iconregular{ -gtk-icon-style: regular;}"; + } } else { css_str += "*{-gtk-icon-style: regular;}"; } diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 789d45551..6634ef170 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -646,10 +646,41 @@ void InkscapePreferences::symbolicThemeCheck() } } } +void InkscapePreferences::symbolicDefaultColor(){ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/theme/symbolicIconsDefaultColor", true); + auto const screen = Gdk::Screen::get_default(); + auto provider = Gtk::CssProvider::create(); + Glib::ustring css_str = ""; + if (prefs->getBool("/theme/symbolicIcons", false)) { + css_str += "*{ -gtk-icon-style: symbolic;}"; + css_str += "image{ color: @theme_fg_color}"; + css_str += "iconinverse{ color: @theme_bg_color;}"; + css_str += "iconregular{ -gtk-icon-style: regular;}"; + } else { + css_str += "*{-gtk-icon-style: regular;}"; + } + // From 3.16, throws an error which we must catch. + try { + provider->load_from_data(css_str); + } +#if GTK_CHECK_VERSION(3, 16, 0) + // Gtk::CssProviderError not defined until 3.16. + 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()); + } +#else + catch (...) { + } +#endif + Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + +} void InkscapePreferences::symbolicAddClass() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/theme/symbolicIconsDefaultColor", false); auto const screen = Gdk::Screen::get_default(); auto provider = Gtk::CssProvider::create(); Glib::ustring css_str = ""; @@ -923,10 +954,16 @@ void InkscapePreferences::initPageUI() _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass)); _page_theme.add_line(true, "", _symbolic_icons, "", "", true), _symbolic_color.init(_("Color for symbolic icons:"), "/theme/symbolicColor", 0x000000ff); - Gtk::Button *_apply_color = new Gtk::Button(_("Apply color")); - _apply_color->set_tooltip_text(_("Apply color to symbolic icons)")); - _apply_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass)); - _page_theme.add_line(false, "", _symbolic_color, _("Color for symbolic icons"), "", false, _apply_color); + Gtk::Button *apply_color = new Gtk::Button(_("Apply color")); + apply_color->set_tooltip_text(_("Apply color to symbolic icons)")); + apply_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass)); + Gtk::Button *theme_decide_color = new Gtk::Button(_("Theme decides")); + theme_decide_color->set_tooltip_text(_("Theme decide symbolic icon color)")); + theme_decide_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicDefaultColor)); + Gtk::Box *icon_buttons = Gtk::manage(new Gtk::Box()); + icon_buttons->pack_start(*apply_color, true, true, 4); + icon_buttons->pack_start(*theme_decide_color, true, true, 4); + _page_theme.add_line(false, "", _symbolic_color, _("Color for symbolic icons"), "", false, icon_buttons); { Glib::ustring sizeLabels[] = { C_("Icon size", "Larger"), C_("Icon size", "Large"), C_("Icon size", "Small"), C_("Icon size", "Smaller") }; diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index ef7c64c07..a9b485a01 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -590,6 +590,7 @@ private: void themeChange(); void symbolicThemeCheck(); void symbolicAddClass(); + void symbolicDefaultColor(); InkscapePreferences(); InkscapePreferences(InkscapePreferences const &d); InkscapePreferences operator=(InkscapePreferences const &d); |
