From 208121646caba0b23288414385a9c80b64417497 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Fri, 30 Nov 2012 15:48:37 +0100 Subject: [PATCH] St: recompute all theme nodes when the icon theme changes StWidget considers "same theme node" as an indication that the style did not change, and skips emitting style-changed in that case. This means that icon theme changes are not picked up by StIcon. https://bugzilla.gnome.org/show_bug.cgi?id=689353 --- src/st/st-theme-context.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/st/st-theme-context.c b/src/st/st-theme-context.c index 5891cf79d..399a858bd 100644 --- a/src/st/st-theme-context.c +++ b/src/st/st-theme-context.c @@ -143,13 +143,6 @@ on_stage_destroy (ClutterStage *stage) g_object_unref (context); } -static gboolean -emit_changed (StThemeContext *context) -{ - g_signal_emit (context, signals[CHANGED], 0); - return FALSE; -} - static void st_theme_context_changed (StThemeContext *context) { @@ -157,12 +150,19 @@ st_theme_context_changed (StThemeContext *context) context->root_node = NULL; g_hash_table_remove_all (context->nodes); - emit_changed (context); + g_signal_emit (context, signals[CHANGED], 0); if (old_root) g_object_unref (old_root); } +static gboolean +changed_idle (gpointer userdata) +{ + st_theme_context_changed (userdata); + return FALSE; +} + static void on_icon_theme_changed (StTextureCache *cache, StThemeContext *context) @@ -170,9 +170,9 @@ on_icon_theme_changed (StTextureCache *cache, /* Note that an icon theme change isn't really a change of the StThemeContext; * the style information has changed. But since the style factors into the * icon_name => icon lookup, faking a theme context change is a good way - * to force users such as StIcon to look up icons again. Don't bother recreating - * the root node, though. */ - g_idle_add ((GSourceFunc) emit_changed, context); + * to force users such as StIcon to look up icons again. + */ + g_idle_add ((GSourceFunc) changed_idle, context); } /**