summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/inkscape-preferences.cpp
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-08-03 11:04:56 +0000
committerJabiertxof <jabier.arraiza@marker.es>2019-08-03 11:04:56 +0000
commit8188af28103fe5badfcba8635279775f06bebfff (patch)
treea0a3320083188253455b0d7829cad93386cb8bec /src/ui/dialog/inkscape-preferences.cpp
parentInitial code (diff)
downloadinkscape-8188af28103fe5badfcba8635279775f06bebfff.tar.gz
inkscape-8188af28103fe5badfcba8635279775f06bebfff.zip
Add custom GTK3 themes inside Inkscape
Diffstat (limited to 'src/ui/dialog/inkscape-preferences.cpp')
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index c6be1e97f..66d8b39ac 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -777,19 +777,26 @@ void InkscapePreferences::themeChange()
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
bool darktheme = prefs->getBool("/theme/preferDarkTheme", false);
Glib::ustring themename = prefs->getString("/theme/gtkTheme");
- if (themename.find("inkscapecustom::") != -1) {
- prefs->setString("/theme/gtkCustomTheme", themename.substr(16));
- themename = "Adwaita";
- prefs->setString("/theme/gtkTheme", "Adwaita");
+ Glib::ustring customthemename = prefs->getString("/theme/gtkTheme");
+ if (customthemename.find("inkscapecustom::") != -1) {
+ //we use adwaita as base of all custom CSS, seems more standar than user default theme than can make unwanted results
+ themename = "Adwaita";
}
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
GtkSettings *settings = gtk_settings_get_default();
g_object_set(settings, "gtk-theme-name", themename.c_str(), NULL);
g_object_set(settings, "gtk-application-prefer-dark-theme", darktheme, NULL);
+
gchar *gtkThemeName;
gboolean gtkApplicationPreferDarkTheme;
-
bool dark = darktheme || themename.find(":dark") != -1;
+ if (customthemename.find("inkscapecustom::") != -1) {
+ dark = prefs->getBool("/theme/preferDarkTheme", false) || customthemename.find(":dark") != -1;
+ INKSCAPE.add_inkscape_css();
+ } else if (INKSCAPE.customcssprovider) {
+ auto const screen = Gdk::Screen::get_default();
+ Gtk::StyleContext::remove_provider_for_screen(screen, INKSCAPE.customcssprovider);
+ }
if (!dark) {
Glib::RefPtr<Gtk::StyleContext> stylecontext = window->get_style_context();
Gdk::RGBA rgba;
@@ -2608,7 +2615,8 @@ void InkscapePreferences::initPageSystem()
_page_system.add_line(true, _("User extensions: "), _sys_user_extension_dir, "",
_("Location of the user’s extensions"), true);
- _sys_user_themes_dir.init(g_build_filename(g_get_user_data_dir(), "themes", NULL), _("Open themes folder"));
+ _sys_user_themes_dir.init((char const *)IO::Resource::get_path(IO::Resource::USER, IO::Resource::THEMES, ""),
+ _("Open themes folder"));
_page_system.add_line(true, _("User themes: "), _sys_user_themes_dir, "", _("Location of the user’s themes"), true);
_sys_user_icons_dir.init((char const *)IO::Resource::get_path(IO::Resource::USER, IO::Resource::ICONS, ""),