eek-renderer: Honor theme changes
Reload style providers so e.g. switching to HighContrast is handled. Closes: #296
This commit is contained in:
		@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user