renderer: Disconnect theme change signal handler
The renderer does not stick around so we need to disconnect the signal
handler on "dispose". Since the renderer is not a GObject track the
signal id manually instead of using `g_signal_connect_object ()`.
Fixes 1995285 ("eek-renderer: Honor theme changes")
This commit is contained in:
@ -228,6 +228,8 @@ eek_renderer_free (EekRenderer *self)
|
|||||||
g_object_unref(self->css_provider);
|
g_object_unref(self->css_provider);
|
||||||
g_object_unref(self->view_context);
|
g_object_unref(self->view_context);
|
||||||
g_object_unref(self->button_context);
|
g_object_unref(self->button_context);
|
||||||
|
g_clear_signal_handler (&self->theme_name_id, gtk_settings_get_default());
|
||||||
|
|
||||||
// this is where renderer-specific surfaces would be released
|
// this is where renderer-specific surfaces would be released
|
||||||
|
|
||||||
free(self);
|
free(self);
|
||||||
@ -299,7 +301,7 @@ renderer_init (EekRenderer *self)
|
|||||||
|
|
||||||
gtk_settings = gtk_settings_get_default ();
|
gtk_settings = gtk_settings_get_default ();
|
||||||
|
|
||||||
g_signal_connect (gtk_settings, "notify::gtk-theme-name",
|
self->theme_name_id = g_signal_connect (gtk_settings, "notify::gtk-theme-name",
|
||||||
G_CALLBACK (on_gtk_theme_name_changed), self);
|
G_CALLBACK (on_gtk_theme_name_changed), self);
|
||||||
|
|
||||||
self->css_provider = squeek_load_style();
|
self->css_provider = squeek_load_style();
|
||||||
|
|||||||
@ -39,6 +39,8 @@ typedef struct EekRenderer
|
|||||||
GtkStyleContext *button_context; // TODO: maybe move a copy to each button
|
GtkStyleContext *button_context; // TODO: maybe move a copy to each button
|
||||||
/// Style class for rendering the view and button CSS.
|
/// Style class for rendering the view and button CSS.
|
||||||
gchar *extra_style; // owned
|
gchar *extra_style; // owned
|
||||||
|
// Theme name change signal handler id
|
||||||
|
gulong theme_name_id;
|
||||||
|
|
||||||
// Mutable state
|
// Mutable state
|
||||||
gint scale_factor; /* the outputs scale factor */
|
gint scale_factor; /* the outputs scale factor */
|
||||||
|
|||||||
Reference in New Issue
Block a user