summaryrefslogtreecommitdiffstats
path: root/src/inkscape.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-10-11 21:40:42 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-10-11 21:40:42 +0000
commitb8e9f23d66a6b47550225cb831240b31d5b470dc (patch)
tree5cdd116777502d5a4b87673d6da66c1b36de1c90 /src/inkscape.cpp
parentFix wrong value (diff)
downloadinkscape-b8e9f23d66a6b47550225cb831240b31d5b470dc.tar.gz
inkscape-b8e9f23d66a6b47550225cb831240b31d5b470dc.zip
Separate Adwaita and Adwaita-dark with specific styling (alowing to tweak any theme with his theme name as css file)to allow better theming. Use this issue as reference: https://gitlab.com/inkscape/inkscape/issues/461
Diffstat (limited to 'src/inkscape.cpp')
-rw-r--r--src/inkscape.cpp43
1 files changed, 21 insertions, 22 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index 030072df8..5a49b1ade 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -558,7 +558,6 @@ void Application::add_gtk_css()
// Add style sheet (GTK3)
auto const screen = Gdk::Screen::get_default();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gchar *gtk_font_name = nullptr;
gchar *gtkThemeName = nullptr;
gchar *gtkIconThemeName = nullptr;
Glib::ustring themeiconname;
@@ -584,7 +583,7 @@ void Application::add_gtk_css()
} else {
prefs->setString("/theme/iconTheme", Glib::ustring(gtkIconThemeName));
}
- g_object_get(settings, "gtk-font-name", &gtk_font_name, NULL);
+
}
g_free(gtkThemeName);
@@ -601,6 +600,26 @@ void Application::add_gtk_css()
}
Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
+
+ Glib::ustring gtkthemename = prefs->getString("/theme/gtkTheme");
+ gtkthemename += ".css";
+ style = get_filename(UIS, gtkthemename.c_str());
+ if (!style.empty()) {
+ if (themeprovider) {
+ Gtk::StyleContext::remove_provider_for_screen(screen, themeprovider);
+ }
+ if (!themeprovider) {
+ themeprovider = Gtk::CssProvider::create();
+ }
+ try {
+ themeprovider->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, themeprovider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ }
+
if (!colorizeprovider) {
colorizeprovider = Gtk::CssProvider::create();
}
@@ -614,26 +633,6 @@ void Application::add_gtk_css()
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 (gtk_font_name && !strncmp(gtk_font_name, "Cantarell", 9)) {
- auto provider = Gtk::CssProvider::create();
- 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);
- }
- g_free(gtk_font_name);
}
void Application::readStyleSheets(bool forceupd)