diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 3752ce3be3..4cb834819e 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -738,15 +738,17 @@ static GtkCssComputedValues * style_values_lookup_for_state (GtkStyleContext *context, GtkStateFlags state) { + GtkCssNodeDeclaration *decl; GtkCssComputedValues *values; if (gtk_css_node_declaration_get_state (context->priv->info->decl) == state) return g_object_ref (style_values_lookup (context)); - gtk_style_context_save (context); - gtk_style_context_set_state (context, state); - values = g_object_ref (style_values_lookup (context)); - gtk_style_context_restore (context); + decl = gtk_css_node_declaration_ref (context->priv->info->decl); + gtk_css_node_declaration_set_state (&decl, state); + values = _gtk_css_computed_values_new (); + build_properties (context, values, decl, NULL); + gtk_css_node_declaration_unref (decl); return values; }