]> Pileus Git - ~andy/gtk/commitdiff
widget: Don't go via path when resetting style
authorBenjamin Otte <otte@redhat.com>
Tue, 20 Mar 2012 15:04:13 +0000 (16:04 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 17 Apr 2012 06:59:09 +0000 (08:59 +0200)
Instead, invalidate the path when the style context changes. And
invalidate the style context directly.

gtk/gtkwidget.c

index 32a2c3b8c7ed7a2c4b26ab3a197ec13d3f265b1d..f9090dc5ce3e949f60748121b675e191cccbabb7 100644 (file)
@@ -8507,13 +8507,7 @@ _gtk_widget_propagate_screen_changed (GtkWidget    *widget,
 static void
 reset_style_recurse (GtkWidget *widget, gpointer data)
 {
-  if (widget->priv->path)
-    {
-      gtk_widget_path_free (widget->priv->path);
-      widget->priv->path = NULL;
-    }
-
-  gtk_widget_get_path (widget);
+  _gtk_widget_invalidate_style_context (widget, GTK_CSS_CHANGE_ANY);
 
   if (GTK_IS_CONTAINER (widget))
     gtk_container_forall (GTK_CONTAINER (widget),
@@ -14065,8 +14059,6 @@ gtk_widget_get_path (GtkWidget *widget)
     
           gtk_widget_path_append_for_widget (widget->priv->path, widget);
         }
-
-      _gtk_widget_invalidate_style_context (widget, GTK_CSS_CHANGE_ANY);
     }
 
   return widget->priv->path;
@@ -14075,6 +14067,12 @@ gtk_widget_get_path (GtkWidget *widget)
 void
 _gtk_widget_style_context_invalidated (GtkWidget *widget)
 {
+  if (widget->priv->path)
+    {
+      gtk_widget_path_free (widget->priv->path);
+      widget->priv->path = NULL;
+    }
+
   if (gtk_widget_get_realized (widget))
     g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0);
   else