summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-06-18 02:19:27 +0000
committerJabiertxof <jabier.arraiza@marker.es>2019-06-18 02:19:27 +0000
commitcaa1eca947b1ff97ab96ae30a967aaccd0d23e63 (patch)
treee9c2c6166af7de73f0497f25a8afed26a962bd1b /src/ui
parentFix compiling issues (diff)
downloadinkscape-caa1eca947b1ff97ab96ae30a967aaccd0d23e63.tar.gz
inkscape-caa1eca947b1ff97ab96ae30a967aaccd0d23e63.zip
Improving styling
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp11
-rw-r--r--src/ui/icon-loader.cpp24
2 files changed, 29 insertions, 6 deletions
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 <gtkmm/iconinfo.h>
#include <gdkmm/display.h>
@@ -64,9 +65,26 @@ 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;
- 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<Gtk::StyleContext> 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();