From 6df489d5a9d613efdb2c02b648302abe67133691 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 5 Jun 2020 12:39:48 -0400 Subject: [PATCH] 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,