diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c index cc443969..72915f6e 100644 --- a/eek/eek-renderer.c +++ b/eek/eek-renderer.c @@ -259,12 +259,49 @@ static GType button_type(void) { return type; } + +static void +on_gtk_theme_name_changed (GtkSettings *settings, gpointer foo, EekRenderer *self) +{ + g_autofree char *name = NULL; + + g_object_get (settings, "gtk-theme-name", &name, NULL); + g_warning ("GTK theme: %s", name); + + gtk_style_context_remove_provider_for_screen (gdk_screen_get_default (), + GTK_STYLE_PROVIDER (self->css_provider)); + gtk_style_context_remove_provider (self->button_context, + GTK_STYLE_PROVIDER(self->css_provider)); + gtk_style_context_remove_provider (self->view_context, + GTK_STYLE_PROVIDER(self->css_provider)); + + g_set_object (&self->css_provider, squeek_load_style()); + + gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), + GTK_STYLE_PROVIDER (self->css_provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_provider (self->button_context, + GTK_STYLE_PROVIDER(self->css_provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_style_context_add_provider (self->view_context, + GTK_STYLE_PROVIDER(self->css_provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +} + + static void renderer_init (EekRenderer *self) { self->pcontext = NULL; self->scale_factor = 1; + GtkSettings *gtk_settings; + + gtk_settings = gtk_settings_get_default (); + + g_signal_connect (gtk_settings, "notify::gtk-theme-name", + G_CALLBACK (on_gtk_theme_name_changed), self); + self->css_provider = squeek_load_style(); }