window: Make sure the decoration node stays at the beginning

Otherwise, the gtk_widget_set_parent call might add the widget node of
the child before the decoration node.
This commit is contained in:
Timm Bäder
2017-04-07 20:13:42 +02:00
parent 395e8d6569
commit 2efcbd4b0f

View File

@@ -727,6 +727,17 @@ gtk_window_measure (GtkWidget *widget,
}
}
static void
gtk_window_add (GtkContainer *container,
GtkWidget *child)
{
/* Insert the child's css node now at the end so the order wrt. decoration_node is correct */
gtk_css_node_insert_before (gtk_widget_get_css_node (GTK_WIDGET (container)),
gtk_widget_get_css_node (child),
NULL);
GTK_CONTAINER_CLASS (gtk_window_parent_class)->add (container, child);
}
static void
gtk_window_class_init (GtkWindowClass *klass)
@@ -774,6 +785,7 @@ gtk_window_class_init (GtkWindowClass *klass)
widget_class->snapshot = gtk_window_snapshot;
widget_class->queue_draw_region = gtk_window_queue_draw_region;
container_class->add = gtk_window_add;
container_class->remove = gtk_window_remove;
container_class->check_resize = gtk_window_check_resize;
container_class->forall = gtk_window_forall;
@@ -4010,6 +4022,11 @@ gtk_window_set_titlebar (GtkWindow *window,
gtk_window_enable_csd (window);
priv->title_box = titlebar;
/* Same reason as in gtk_window_add */
gtk_css_node_insert_before (gtk_widget_get_css_node (GTK_WIDGET (window)),
gtk_widget_get_css_node (titlebar),
NULL);
gtk_widget_set_parent (priv->title_box, widget);
if (GTK_IS_HEADER_BAR (titlebar))
{