summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2016-05-08 07:29:51 +0000
committertavmjong-free <tavmjong@free.fr>2016-05-08 07:29:51 +0000
commitfbb9317b912eba2ac02019869b687ec637790e9f (patch)
tree567190da19bdbd8ed2651e15bd786d4af853083d /src
parentClarify license. (diff)
downloadinkscape-fbb9317b912eba2ac02019869b687ec637790e9f.tar.gz
inkscape-fbb9317b912eba2ac02019869b687ec637790e9f.zip
Start of GTK3 external style sheet support.
(bzr r14873.1.1)
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp34
-rw-r--r--src/widgets/desktop-widget.cpp1
-rw-r--r--src/widgets/ruler.cpp15
3 files changed, 35 insertions, 15 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 840643a90..99e3ccfe6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -52,6 +52,11 @@
#include <glib-object.h>
#include <gtk/gtk.h>
+#if GTK_CHECK_VERSION(3,0,0)
+#include <gtkmm/cssprovider.h>
+#include <gdkmm/screen.h>
+#endif
+
#include "inkgc/gc-core.h"
#ifdef AND
@@ -1051,6 +1056,35 @@ sp_main_gui(int argc, char const **argv)
#endif
g_free(usericondir);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ // Add style sheet (GTK3)
+ Glib::RefPtr<Gdk::Screen> screen = Gdk::Screen::get_default();
+
+ Glib::ustring inkscape_style = INKSCAPE_UIDIR;
+ inkscape_style += "/style.css";
+ // std::cout << "CSS Stylesheet Inkscape: " << inkscape_style << std::endl;
+ Glib::RefPtr<Gtk::CssProvider> provider = Gtk::CssProvider::create();
+ try {
+ provider->load_from_path (inkscape_style);
+ }
+ catch (const Gtk::CssProviderError& ex)
+ {
+ std::cerr << "CSSProviderError::load_from_path(): failed to load: " << inkscape_style << "\n (" << ex.what() << ")" << std::endl;
+ }
+ Gtk::StyleContext::add_provider_for_screen (screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+ Glib::ustring user_style = Inkscape::Application::profile_path("ui/style.css");
+ // std::cout << "CSS Stylesheet User: " << user_style << std::endl;
+ Glib::RefPtr<Gtk::CssProvider> provider2 = Gtk::CssProvider::create();
+ try {
+ provider2->load_from_path (user_style);
+ }
+ catch (const Gtk::CssProviderError& ex)
+ {}
+ Gtk::StyleContext::add_provider_for_screen (screen, provider2, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+#endif
+
gdk_event_handler_set((GdkEventFunc)snooper, NULL, NULL);
Inkscape::Debug::log_display_config();
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index fe724a964..1a4fcccf4 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -404,6 +404,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
Glib::RefPtr<Gtk::CssProvider> guides_lock_style_provider = Gtk::CssProvider::create();
guides_lock_style_provider->load_from_data("GtkWidget { padding-left: 0; padding-right: 0; padding-top: 0; padding-bottom: 0; }");
Gtk::Widget * wnd = Glib::wrap(dtw->guides_lock);
+ wnd->set_name("guides_lock");
Glib::RefPtr<Gtk::StyleContext> context = wnd->get_style_context();
context->add_provider(guides_lock_style_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
#endif
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index 5c715b0be..bcab535f9 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -282,21 +282,6 @@ sp_ruler_init (SPRuler *ruler)
priv->pos_redraw_idle_id = 0;
priv->font_scale = DEFAULT_RULER_FONT_SCALE;
-
-#if GTK_CHECK_VERSION(3,0,0)
- // Hard code off-white for the moment. Where is @bg_color defined?
- const gchar *str =
- "SPRuler {\n"
-// " background-color: @bg_color;\n"
- " background-color: #f8f8f8;\n"
- "}\n";
- GtkCssProvider *css = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (css, str, -1, NULL);
- gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET (ruler)),
- GTK_STYLE_PROVIDER (css),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- g_object_unref (css);
-#endif
}
static void