]> Pileus Git - ~andy/gtk/commitdiff
widget: Set up signals after initializing style context
authorBenjamin Otte <otte@redhat.com>
Fri, 9 Mar 2012 11:35:58 +0000 (12:35 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 9 Mar 2012 12:23:05 +0000 (13:23 +0100)
Otherwise, signals would be emitted on semi set up style context which
would then cause crashes when the signal handlers tried to use them.

https://bugzilla.gnome.org/show_bug.cgi?id=662023

gtk/gtkwidget.c

index c4c85c9e0cf5cbca840e1165b7b292ba7c8fc9e5..a82f05023a45f459a64f6ce35852e502afa109aa 100644 (file)
@@ -14119,9 +14119,6 @@ gtk_widget_get_style_context (GtkWidget *widget)
                                     "direction", gtk_widget_get_direction (widget),
                                     NULL);
 
-      g_signal_connect (widget->priv->context, "changed",
-                        G_CALLBACK (style_context_changed), widget);
-
       screen = gtk_widget_get_screen (widget);
 
       if (screen)
@@ -14131,6 +14128,9 @@ gtk_widget_get_style_context (GtkWidget *widget)
       if (priv->parent)
         gtk_style_context_set_parent (priv->context,
                                       gtk_widget_get_style_context (priv->parent));
+
+      g_signal_connect (widget->priv->context, "changed",
+                        G_CALLBACK (style_context_changed), widget);
     }
 
   return widget->priv->context;