From 2efcbd4b0fd6a03a8cbf29eb9f27c10f511bf46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Fri, 7 Apr 2017 20:13:42 +0200 Subject: [PATCH] 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. --- gtk/gtkwindow.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 0c636896eb..ce3da22dcd 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -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)) {