From 327a9fc66a2d8bf1f4814d608f1a95fdd6855bff Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 13 Jun 2010 17:26:18 +0200 Subject: [PATCH] GtkWidget: Generate GtkWidgetPath on set_parent. There's no need to wait for realize() to have the right widget style. --- gtk/gtkwidget.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 2289ac2821..75ef3c9d39 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4198,17 +4198,6 @@ gtk_widget_realize (GtkWidget *widget) gdk_window_set_support_multidevice (priv->window, TRUE); _gtk_widget_enable_device_events (widget); - - context = g_object_get_qdata (G_OBJECT (widget), - quark_style_context); - if (context) - { - GtkWidgetPath *path; - - path = gtk_widget_get_path (widget); - gtk_style_context_set_path (context, path); - gtk_widget_path_free (path); - } } } @@ -7221,6 +7210,7 @@ gtk_widget_set_parent (GtkWidget *widget, { GtkWidgetPrivate *priv; GtkStateData data; + GtkStyleContext *context; g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (parent)); @@ -7294,6 +7284,17 @@ gtk_widget_set_parent (GtkWidget *widget, { gtk_widget_queue_compute_expand (parent); } + + context = g_object_get_qdata (G_OBJECT (widget), + quark_style_context); + if (context) + { + GtkWidgetPath *path; + + path = gtk_widget_get_path (widget); + gtk_style_context_set_path (context, path); + gtk_widget_path_free (path); + } } /** @@ -13188,7 +13189,7 @@ gtk_widget_get_path (GtkWidget *widget) GList *regions, *reg; g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - g_return_val_if_fail (gtk_widget_get_realized (widget), NULL); + g_return_val_if_fail ((widget->parent || gtk_widget_is_toplevel (widget)), NULL); parent = widget->priv->parent; @@ -13277,7 +13278,8 @@ gtk_widget_get_style_context (GtkWidget *widget) GTK_STYLE_PROVIDER_PRIORITY_USER); } - if (gtk_widget_get_realized (widget)) + if (widget->parent || + gtk_widget_is_toplevel (widget)) { GtkWidgetPath *path;