summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2019-01-26 19:55:22 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2019-01-26 19:55:22 +0000
commit61a033d08452b31a19ab166b1a1bfe1c05cd1f58 (patch)
tree14412187a4ab47eb37ed792e177f163a505aeba7 /src
parentRectToolbar: GtkAction migration (first pass) (diff)
parentAdd 'Theme Decide' option to symbolic icons color (diff)
downloadinkscape-61a033d08452b31a19ab166b1a1bfe1c05cd1f58.tar.gz
inkscape-61a033d08452b31a19ab166b1a1bfe1c05cd1f58.zip
Merge branch 'master' of gitlab.com:inkscape/inkscape
Diffstat (limited to 'src')
-rw-r--r--src/inkscape.cpp23
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp45
-rw-r--r--src/ui/dialog/inkscape-preferences.h1
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);