summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-06-17 23:49:08 +0000
committerJabiertxof <jabier.arraiza@marker.es>2019-06-18 00:16:27 +0000
commite8672ace5d3c10d3edcb6ff003b8fd69151fbe0c (patch)
treee2b1aa45e4d11417006248178e94223ee5d884a1
parentFix translations (diff)
downloadinkscape-e8672ace5d3c10d3edcb6ff003b8fd69151fbe0c.tar.gz
inkscape-e8672ace5d3c10d3edcb6ff003b8fd69151fbe0c.zip
Base of theming refactor
-rw-r--r--share/ui/dialog-livepatheffect-add.ui1
-rw-r--r--share/ui/style.css141
-rw-r--r--src/inkscape.cpp142
-rw-r--r--src/inkscape.h3
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp113
-rw-r--r--src/ui/dialog/inkscape-preferences.h2
-rw-r--r--src/ui/dialog/symbols.cpp3
-rw-r--r--src/ui/icon-loader.cpp4
8 files changed, 151 insertions, 258 deletions
diff --git a/share/ui/dialog-livepatheffect-add.ui b/share/ui/dialog-livepatheffect-add.ui
index ebcbfba50..7f11ea768 100644
--- a/share/ui/dialog-livepatheffect-add.ui
+++ b/share/ui/dialog-livepatheffect-add.ui
@@ -235,7 +235,6 @@
</child>
<style>
<class name="iconsymbolic"/>
- <class name="colordefault"/>
</style>
</object>
<object class="GtkPopover" id="LPESelectorEffectInfoPop">
diff --git a/share/ui/style.css b/share/ui/style.css
index 3a965efa4..910e3353c 100644
--- a/share/ui/style.css
+++ b/share/ui/style.css
@@ -56,120 +56,59 @@
/* Inkscape CSS helper
- * to add a class to a widget do some thing like
- * widget->get_style_context()->add_class("mycoolclass");
- * we define a bunch of helper CSS styles
- * Ecah Inkscape desktop has a class in top level window
- * call "dark" so you can style using 2 clases with or without
- * "dark" by this way you can always know if the UI is in dark mode
- * Also added some helper clases:
- * ::::::: Color based
- * ::::::: apply to colors
- * ::::::: scope widget and all his childs
- * ".colordefault" use default window color
- * ".colorinverse" invert window colors
- * ".colorbright" force bright colors no matter the UI is dark or bright
- * ".colordark" same but dark
- * ::::::: Background based
- * ::::::: apply to backgrounds
- * ::::::: scope widget and all his childs
- * ".backgrounddefault" use default window color
- * ".backgroundinverse" invert window colors
- * ".backgroundbright" force bright colors no matter the UI is dark or bright
- * ".backgrounddark" same but daLPESelectorButtonBoxk
- * :::::::: Icon Based.
- * :::::::: apply to color (foreground)
- * :::::::: scope widget and all nested images
- * ".iconsymbolic" Force icon symbolic
- * ".iconregular" Force colorful icons
- * ".iconcolordefault" Theme color default
- * ".iconcolorinverse" Inverse color from theme
- * ".iconcolorbright, Force clear icon
- * ".iconcolordark" Force dark icon
- * ".iconcolornamed" Icon in prefs selected color;
- * ".iconcolornamedinverse" Icon in inverse color from prefs"
- * :::::::: Combo box.
- * "..combobright" Combo bright
- * ".regular ..." Inkscape is in regular icon mode
- * ".symbolic ..." Inkscape is in symbolic icon mode
- */
-
-.colordefault,
-.colordefault * {
- color: @theme_fg_color;
-}
-
-.colorinverse,
-.colorinverse * {
- color: @theme_bg_color;
-}
-
-.colorbright,
-.colorbright * {
- color: @theme_fg_color;
-}
-
-.dark .colorbright,
-.dark .colorbright * {
- color: @theme_bg_color;
+ * to add a class to a widget do some thing like
+ * widget->get_style_context()->add_class("mycoolclass");
+ * we define a bunch of helper CSS styles
+ * Each Inkscape desktop has some classes in top level window
+ * called "dark|bright" and "symbolic|regular" so you can style using this clases
+ * by this way you can always know if the UI is in dark mode
+ * Also added some helper clases:
+ * ::::::: Color based
+ * ::::::: apply to colors
+ * ::::::: scope widget and all his childs
+ * ".inversestyle" invert window colors
+ * ".brightstyle" force bright colors no matter the UI is dark or bright
+ * ".darkstyle" same but dark
+ * ".defaultstyle" use default window color for child wigets inside a modified one
+ * :::::::: Icon Based.
+ * ".iconsymbolic" Force icon symbolic
+ * ".iconregular" Force colorful icons
+ * :::::::: Combo box.
+ * "..combobright" Combo bright
+ */
+
+* {
+ -gtk-icon-palette: default;
+}
+
+.symbolic image {
+ -gtk-icon-style: symbolic;
}
-.colordark,
-.colordark * {
- color: @theme_bg_color;
+.regular image {
+ -gtk-icon-style: regular;
}
-.dark .colordark,
-.dark .colordark * {
+.bright .brightstyle,
+.bright .brightstyle *,
+.dark .darkstyle,
+.dark .darkstyle * {
color: @theme_fg_color;
-}
-
-.backgrounddefault,
-.backgrounddefault * {
- background-color: @theme_bg_color;
- background-image: image(@theme_bg_color);
-}
-
-.backgroundinverse,
-.backgroundinverse * {
- background-color: @theme_fg_color;
- background-image: image(@theme_fg_color);
-}
-
-.backgroundbright,
-.backgroundbright * {
background-color: @theme_bg_color;
background-image: image(@theme_bg_color);
}
-.dark .backgroundbright,
-.dark .backgroundbright * {
- background-color: @theme_fg_color;
- background-image: image(@theme_fg_color);
-}
-
-.backgrounddark,
-.backgrounddark * {
+.bright .darkstyle,
+.bright .darkstyle *,
+.dark .brightstyle,
+.dark .brightstyle *,
+.inversestyle,
+.inversestyle * {
+ color: @theme_bg_color;
background-color: @theme_fg_color;
background-image: image(@theme_fg_color);
}
-.dark .backgrounddark,
-.dark .backgrounddark * {
- background-color: @theme_bg_color;
- background-image: image(@theme_bg_color);
-}
-
-.iconsymbolic,
-.iconsymbolic image {
- -gtk-icon-style: symbolic;
-}
-
-.iconregular,
-.iconregular image {
- -gtk-icon-style: regular;
-}
-
.combobright * {
color: @theme_text_color;
background-color: @theme_base_color;
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index cec0d9407..36ae48a38 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -23,7 +23,6 @@
#include <glibmm/fileutils.h>
#include <glibmm/regex.h>
-#include <gtkmm/cssprovider.h>
#include <gtkmm/icontheme.h>
#include <gtkmm/messagedialog.h>
@@ -371,57 +370,6 @@ Application::add_gtk_css()
// Add style sheet (GTK3)
auto const screen = Gdk::Screen::get_default();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- auto provider = Gtk::CssProvider::create();
- Glib::ustring css_str = "";
- 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);
- // Use in case the special widgets have inverse theme background and symbolic
- int colorset_inverse = colorset ^ 0xffffff00;
- sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
- if (prefs->getBool("/theme/symbolicIcons", false)) {
- if (prefs->getBool("/theme/symbolicIconsDefaultColor", true)) {
- css_str += "*{ -gtk-icon-style: symbolic;}";
- css_str += ".dark,.bright,.dark image,.bright 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 += ".dark *,.bright *{ color: @theme_fg_color;}";
- css_str += ".dark,.bright,.dark image,.bright image{ color:";
- css_str += colornamed;
- css_str += ";";
- css_str += "-gtk-icon-palette: success ";
- css_str += colornamedsuccess;
- css_str += ", warning ";
- css_str += colornamedwarning;
- css_str += ", error ";
- css_str += colornamederror;
- 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;}";
- }
- css_str += ".iconcolornamed, .iconcolornamed image{ color:";
- css_str += colornamed;
- css_str += ";}";
- css_str += ".iconcolornamedinverse, .colornamedinverse image{ color:";
- css_str += colornamed_inverse;
- css_str += ";}";
const gchar *gtk_font_name = "";
const gchar *gtkThemeName;
const gchar *gtkIconThemeName;
@@ -449,32 +397,10 @@ Application::add_gtk_css()
}
g_object_get(settings, "gtk-font-name", &gtk_font_name, NULL);
}
- if (!strncmp(gtk_font_name, "Cantarell", 9)) {
- css_str += "#monoStrokeWidth,";
- css_str += "#fillEmptySpace,";
- css_str += "#SelectStatus,";
- css_str += "#CoordinateStatusX,";
- css_str += "#CoordinateStatusY,";
- css_str += "#DesktopMainTable spinbutton{";
- css_str += " font-family: sans-serif";
- css_str += "}"; // we also can add to * but seems to me Cantarell looks better for other places
- }
-
- try {
- provider->load_from_data(css_str);
- } 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, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
- // we want a tiny file with 3 or 4 lines, so we can load without removing context
- // is more understandable than record previously applied
+
+ auto provider = Gtk::CssProvider::create();
Glib::ustring style = get_filename(UIS, "style.css");
if (!style.empty()) {
- auto provider = Gtk::CssProvider::create();
-
- // From 3.16, throws an error which we must catch.
try {
provider->load_from_path (style);
} catch (const Gtk::CssProviderError& ex)
@@ -482,9 +408,71 @@ Application::add_gtk_css()
g_critical("CSSProviderError::load_from_path(): failed to load '%s'\n(%s)",
style.c_str(), ex.what().c_str());
}
-
Gtk::StyleContext::add_provider_for_screen (screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
+ colorizeprovider = Gtk::CssProvider::create();
+ Glib::ustring css_str = "";
+ if (prefs->getBool("/theme/symbolicIcons", false)) {
+ 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);
+ // Use in case the special widgets have inverse theme background and symbolic
+ int colorset_inverse = colorset ^ 0xffffff00;
+ sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
+
+ css_str += "*{-gtk-icon-palette: success ";
+ css_str += colornamedsuccess;
+ css_str += ", warning ";
+ css_str += colornamedwarning;
+ css_str += ", error ";
+ css_str += colornamederror;
+ css_str += ";}";
+ css_str += "SPRuler, ruler-widget,";
+ css_str += ".bright image, .dark image";
+ css_str += "{color:";
+ css_str += colornamed;
+ css_str += ";}";
+ css_str += ".dark .brightstyle image,";
+ css_str += ".bright .darkstyle image,";
+ css_str += ".inversestyle image";
+ css_str += "{color:";
+ css_str += colornamed_inverse;
+ css_str += ";}";
+ }
+ }
+ try {
+ colorizeprovider->load_from_data(css_str);
+ } 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, colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ if (!strncmp(gtk_font_name, "Cantarell", 9)) {
+ css_str = "#monoStrokeWidth,";
+ css_str += "#fillEmptySpace,";
+ css_str += "#SelectStatus,";
+ css_str += "#CoordinateStatusX,";
+ css_str += "#CoordinateStatusY,";
+ css_str += "#DesktopMainTable spinbutton{";
+ css_str += " font-family: sans-serif;";
+ css_str += "}"; // we also can add to * but seems to me Cantarell looks better for other places
+ try {
+ provider->load_from_data(css_str);
+ } 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, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ }
}
/* \brief Constructor for the application.
diff --git a/src/inkscape.h b/src/inkscape.h
index d14420352..95c0f5296 100644
--- a/src/inkscape.h
+++ b/src/inkscape.h
@@ -20,6 +20,7 @@
#include <glib-object.h>
#include <sigc++/signal.h>
#include "layer-model.h"
+#include <gtkmm/cssprovider.h>
#include "selection.h"
class SPDesktop;
@@ -108,7 +109,7 @@ public:
Inkscape::UI::Tools::ToolBase * active_event_context();
SPDocument * active_document();
SPDesktop * active_desktop();
-
+ Glib::RefPtr< Gtk::StyleProvider > colorizeprovider;
// Use this function to get selection model etc for a document
Inkscape::ActionContext action_context_for_document(SPDocument *doc);
Inkscape::ActionContext active_action_context();
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 5f1f98c01..e67a80c58 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -629,109 +629,74 @@ void InkscapePreferences::symbolicThemeCheck()
}
void InkscapePreferences::symbolicDefaultColor(){
+ auto const screen = Gdk::Screen::get_default();
+ Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
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 += ".dark,.bright,.dark image,.bright image{ color: @theme_fg_color;-gtk-icon-palette: default;}";
- css_str += "iconinverse{ color: @theme_bg_color;}";
- css_str += "iconregular{ -gtk-icon-style: regular;}";
- } else {
- css_str += "*{-gtk-icon-style: regular;}";
- }
-
- try {
- provider->load_from_data(css_str);
- } 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, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
}
-void InkscapePreferences::symbolicAddClass()
+void InkscapePreferences::symbolicStyling()
{
+ auto const screen = Gdk::Screen::get_default();
+ Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
using namespace Inkscape::IO::Resource;
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 = "";
- 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);
- // Use in case the special widgets have inverse theme background and symbolic
- int colorset_inverse = colorset ^ 0xffffff00;
- sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel();
+ Glib::ustring css_str = "";
if (prefs->getBool("/theme/symbolicIcons", false)) {
- css_str += "*{ -gtk-icon-style: symbolic;}";
- css_str += ".dark *,.bright *{ color: @theme_fg_color;}";
- css_str += ".dark,.bright,.dark image,.bright image{ color:";
- css_str += colornamed;
- css_str += ";";
- css_str += "-gtk-icon-palette: success ";
+ 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);
+ // Use in case the special widgets have inverse theme background and symbolic
+ int colorset_inverse = colorset ^ 0xffffff00;
+ sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
+ css_str += "*{-gtk-icon-palette: success ";
css_str += colornamedsuccess;
css_str += ", warning ";
css_str += colornamedwarning;
css_str += ", error ";
css_str += colornamederror;
css_str += ";}";
+ css_str += "SPRuler, ruler-widget,";
+ css_str += ".bright image, .dark image";
+ css_str += "{color:";
+ css_str += colornamed;
+ css_str += ";}";
+ css_str += ".dark .brightstyle image,";
+ css_str += ".bright .darkstyle image,";
+ css_str += ".inversestyle image";
+ css_str += "{color:";
+ css_str += colornamed_inverse;
+ css_str += ";}";
if (window ) {
window->get_style_context()->add_class("symbolic");
window->get_style_context()->remove_class("regular");
}
} else {
- css_str += "*{-gtk-icon-style: regular;}";
if (window) {
window->get_style_context()->add_class("regular");
window->get_style_context()->remove_class("symbolic");
}
}
- css_str += ".iconcolornamed, .iconcolornamed image{ color:";
- css_str += colornamed;
- css_str += ";}";
- css_str += ".iconcolornamedinverse, .colornamedinverse image{ color:";
- css_str += colornamed_inverse;
- css_str += ";}";
-
try {
- provider->load_from_data(css_str);
+ INKSCAPE.colorizeprovider->load_from_data(css_str);
} 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, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- // we want a tiny file with 3 or 4 lines, so we can load without removing context
- // is more understandable than record previously applied
- Glib::ustring style = get_filename(UIS, "style.css");
- if (!style.empty()) {
- auto provider = Gtk::CssProvider::create();
-
- try {
- provider->load_from_path(style);
- } catch (const Gtk::CssProviderError &ex) {
- g_critical("CSSProviderError::load_from_path(): failed to load '%s'\n(%s)", style.c_str(),
- ex.what().c_str());
- }
-
- Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- }
+ Gtk::StyleContext::add_provider_for_screen(screen, INKSCAPE.colorizeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
+
void InkscapePreferences::themeChange()
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -990,7 +955,7 @@ void InkscapePreferences::initPageUI()
_icon_theme.signal_changed().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicThemeCheck));
}
_symbolic_icons.init(_("Use symbolic icons"), "/theme/symbolicIcons", true);
- _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicAddClass));
+ _symbolic_icons.signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicStyling));
_page_theme.add_line(true, "", _symbolic_icons, "", "", true);
_symbolic_color.init(_("Color for symbolic icons:"), "/theme/symbolicColor", 0x2E3436ff);
_symbolic_success_color.init(_("Color for symbolic success icons:"), "/theme/symbolicSuccessColor", 0x4AD589ff);
@@ -999,7 +964,7 @@ void InkscapePreferences::initPageUI()
Gtk::Label *_symbolic_color_label = Gtk::manage(new Gtk::Label(_("Change colors:")));
Gtk::Button *apply_color = Gtk::manage(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));
+ apply_color->signal_clicked().connect(sigc::mem_fun(*this, &InkscapePreferences::symbolicStyling));
Gtk::Button *theme_decide_color = Gtk::manage(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));
diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h
index c7fe41ebf..c946eb6bd 100644
--- a/src/ui/dialog/inkscape-preferences.h
+++ b/src/ui/dialog/inkscape-preferences.h
@@ -592,7 +592,7 @@ protected:
private:
void themeChange();
void symbolicThemeCheck();
- void symbolicAddClass();
+ void symbolicStyling();
void symbolicDefaultColor();
InkscapePreferences();
diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp
index d4b48258d..9eaec21dc 100644
--- a/src/ui/dialog/symbols.cpp
+++ b/src/ui/dialog/symbols.cpp
@@ -199,8 +199,7 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) :
overlay->set_hexpand();
overlay->set_vexpand();
overlay->add(* scroller);
- overlay->get_style_context()->add_class("colorbright");
- overlay->get_style_context()->add_class("backgroundbright");
+ overlay->get_style_context()->add_class("brightstyle");
scroller->set_size_request(100, 250);
table->attach(*Gtk::manage(overlay),0,row,2,1);
diff --git a/src/ui/icon-loader.cpp b/src/ui/icon-loader.cpp
index e4a917e6c..54cdd9e6b 100644
--- a/src/ui/icon-loader.cpp
+++ b/src/ui/icon-loader.cpp
@@ -64,7 +64,9 @@ Glib::RefPtr<Gdk::Pixbuf> 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;
- _icon_pixbuf = iconinfo.load_symbolic(SP_ACTIVE_DESKTOP->getToplevel()->get_style_context(), was_symbolic);
+ Glib::RefPtr< Gtk::StyleContext > stylecontext = SP_ACTIVE_DESKTOP->getToplevel()->get_style_context();
+ stylecontext->add_provider(INKSCAPE.colorizeprovider, 1);
+ _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();