[gtk/wip/otte/for-master: 1/8] widget: Always update the CSS node




commit d9b216e62940aa9b159611a88ed9af57a050e51d
Author: Benjamin Otte <otte redhat com>
Date:   Tue Oct 20 01:50:12 2020 +0200

    widget: Always update the CSS node
    
    Anybody who keeps their own CSS nodes around or wants to order CSS nodes
    different from widgets will from now on have to do it manually all the
    time.
    
    This is outdated behavior, nobody should be doing either of those two
    things.
    
    Also, the correct case is much more common, and not doing it
    automatically was causing bugs.
    
    Fixes #3280

 gtk/gtktreeview.c       | 6 ++++--
 gtk/gtktreeviewcolumn.c | 3 ++-
 gtk/gtkwidget.c         | 9 +++------
 3 files changed, 9 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 315360c683..4c76f0405d 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -10790,10 +10790,12 @@ gtk_tree_view_insert_column (GtkTreeView       *tree_view,
                                            column, position);
   priv->n_columns++;
 
-  gtk_tree_view_update_button_position (tree_view, column);
-
   _gtk_tree_view_column_set_tree_view (column, tree_view);
 
+  /* XXX: We need to reparent the node into the header, somebody make that a real widget */
+  gtk_css_node_set_parent (gtk_widget_get_css_node (gtk_tree_view_column_get_button (column)), NULL);
+  gtk_tree_view_update_button_position (tree_view, column);
+
   if (gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     {
       GList *list;
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index 32f640b354..f224182192 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -1324,7 +1324,8 @@ _gtk_tree_view_column_set_tree_view (GtkTreeViewColumn *column,
 
   priv->tree_view = GTK_WIDGET (tree_view);
 
-  gtk_widget_set_parent (priv->button, GTK_WIDGET (tree_view));
+  /* avoid a warning with our messed up CSS nodes */
+  gtk_widget_insert_after (priv->button, GTK_WIDGET (tree_view), NULL);
 
   priv->property_changed_signal =
     g_signal_connect_swapped (tree_view,
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 29f595c55a..014772acb2 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -5741,12 +5741,9 @@ gtk_widget_reposition_after (GtkWidget *widget,
   data.flags_to_unset = 0;
   gtk_widget_propagate_state (widget, &data);
 
-  if (gtk_css_node_get_parent (priv->cssnode) == NULL)
-    {
-      gtk_css_node_insert_after (parent->priv->cssnode,
-                                 priv->cssnode,
-                                 previous_sibling ? previous_sibling->priv->cssnode : NULL);
-    }
+  gtk_css_node_insert_after (parent->priv->cssnode,
+                             priv->cssnode,
+                             previous_sibling ? previous_sibling->priv->cssnode : NULL);
 
   _gtk_widget_update_parent_muxer (widget);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]