From f6606c4f6f7fc1b078978caf7e35cf1c8e69e6e7 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 15 Dec 2015 01:07:03 +0100 Subject: [PATCH] cssnode: Clear cache if reusing style When we reuse styles that didn't change across changes to the source CSS, make sure we clear the caches. Otherwise child nodes will pick up styles from the old source CSS. --- gtk/gtkcssnode.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c index a1bbe77d36..0772369fae 100644 --- a/gtk/gtkcssnode.c +++ b/gtk/gtkcssnode.c @@ -1034,6 +1034,12 @@ gtk_css_node_ensure_style (GtkCssNode *cssnode, style_changed = gtk_css_node_set_style (cssnode, new_style); g_object_unref (new_style); + + if (!style_changed && (cssnode->pending_changes & GTK_CSS_CHANGE_SOURCE)) + { + /* clear the global cache if we reuse the same style after the CSS changed */ + g_object_set_qdata (G_OBJECT (cssnode->style), quark_global_cache, NULL); + } } else {