[gtk/columnview-reorder-cells: 2/3] columnviewcolumn: Add private api to set the position



commit bd4901a862cd1ae7a5ae33ce0cb9e8ac8881317e
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jun 5 12:39:48 2020 -0400

    columnviewcolumn: Add private api to set the position
    
    This is needed to make columns reorder their cells when
    their position in the column views list of columns
    changes.

 gtk/gtkcolumnviewcolumn.c        | 19 +++++++++++++++++++
 gtk/gtkcolumnviewcolumnprivate.h |  3 +++
 2 files changed, 22 insertions(+)
---
diff --git a/gtk/gtkcolumnviewcolumn.c b/gtk/gtkcolumnviewcolumn.c
index 0567931905..dd8a4cd3a4 100644
--- a/gtk/gtkcolumnviewcolumn.c
+++ b/gtk/gtkcolumnviewcolumn.c
@@ -625,6 +625,25 @@ gtk_column_view_column_set_column_view (GtkColumnViewColumn *self,
   g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COLUMN_VIEW]);
 }
 
+void
+gtk_column_view_column_set_position (GtkColumnViewColumn *self,
+                                     guint                position)
+{
+  GtkColumnViewCell *cell;
+
+  gtk_list_item_widget_reorder_child (gtk_column_view_get_header_widget (self->view),
+                                      self->header,
+                                      position);
+
+  for (cell = self->first_cell; cell; cell = gtk_column_view_cell_get_next (cell))
+    {
+      GtkListItemWidget *list_item;
+
+      list_item = GTK_LIST_ITEM_WIDGET (gtk_widget_get_parent (GTK_WIDGET (cell)));
+      gtk_list_item_widget_reorder_child (list_item, GTK_WIDGET (cell), position);
+    }
+}
+
 /**
  * gtk_column_view_column_get_factory:
  * @self: a #GtkColumnViewColumn
diff --git a/gtk/gtkcolumnviewcolumnprivate.h b/gtk/gtkcolumnviewcolumnprivate.h
index 2fa9afa989..d71bc8a9dd 100644
--- a/gtk/gtkcolumnviewcolumnprivate.h
+++ b/gtk/gtkcolumnviewcolumnprivate.h
@@ -28,6 +28,9 @@
 void                    gtk_column_view_column_set_column_view          (GtkColumnViewColumn    *self,
                                                                          GtkColumnView          *view);
 
+void                    gtk_column_view_column_set_position             (GtkColumnViewColumn    *self,
+                                                                         guint                   position);
+
 void                    gtk_column_view_column_add_cell                 (GtkColumnViewColumn    *self,
                                                                          GtkColumnViewCell      *cell);
 void                    gtk_column_view_column_remove_cell              (GtkColumnViewColumn    *self,


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