GtkWidget: Generate GtkWidgetPath on set_parent.
There's no need to wait for realize() to have the right widget style.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user