]> Pileus Git - ~andy/gtk/commitdiff
widget: Set parent style context
authorBenjamin Otte <otte@redhat.com>
Thu, 29 Dec 2011 11:40:21 +0000 (12:40 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 9 Jan 2012 17:37:50 +0000 (18:37 +0100)
gtk/gtkwidget.c

index a830741129ae674ffed5ba89f18fb17b099ca38f..033aeb00d0d6764aa78479da3aa333fec57c667d 100644 (file)
@@ -3785,6 +3785,8 @@ gtk_widget_unparent (GtkWidget *widget)
 
   /* Unset window-unfocused since we are no longer inside a toplevel window */
   gtk_widget_unset_state_flags (widget, GTK_STATE_FLAG_WINDOW_UNFOCUSED);
+  if (priv->context)
+    gtk_style_context_set_parent (priv->context, NULL);
 
   g_signal_emit (widget, widget_signals[PARENT_SET], 0, old_parent);
   if (toplevel)
@@ -7815,6 +7817,9 @@ gtk_widget_set_parent (GtkWidget *widget,
   data.operation = STATE_CHANGE_REPLACE;
   gtk_widget_propagate_state (widget, &data);
 
+  if (priv->context)
+    gtk_style_context_set_parent (priv->context,
+                                  gtk_widget_get_style_context (parent));
   gtk_widget_reset_style (widget);
 
   g_signal_emit (widget, widget_signals[PARENT_SET], 0, NULL);
@@ -13867,6 +13872,9 @@ gtk_widget_get_style_context (GtkWidget *widget)
         gtk_style_context_set_screen (priv->context, screen);
 
       gtk_style_context_set_path (priv->context, path);
+      if (priv->parent)
+        gtk_style_context_set_parent (priv->context,
+                                      gtk_widget_get_style_context (priv->parent));
     }
 
   return widget->priv->context;