From f631e0e1e0a8fb7fa2cf242cc3281f795d12adcb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 5 Jun 2020 12:40:32 -0400 Subject: [PATCH] columnview: Update column positions on reordering Tell reordered columns to reorder their cells to the new position. This is necessary to get things like separators right. The visible symptom of this problem was the lack of the right border when the last column is reorder to another position, since the title widget was still the last in its container, so :last-child applied. --- gtk/gtkcolumnview.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gtk/gtkcolumnview.c b/gtk/gtkcolumnview.c index 46fb357147..190a3ae0e9 100644 --- a/gtk/gtkcolumnview.c +++ b/gtk/gtkcolumnview.c @@ -1363,6 +1363,7 @@ gtk_column_view_insert_column (GtkColumnView *self, g_return_if_fail (gtk_column_view_column_get_column_view (column) == NULL || gtk_column_view_column_get_column_view (column) == self); g_return_if_fail (position <= g_list_model_get_n_items (G_LIST_MODEL (self->columns))); + int old_position = -1; g_object_ref (column); @@ -1377,16 +1378,20 @@ gtk_column_view_insert_column (GtkColumnView *self, g_object_unref (item); if (item == column) { + old_position = i; g_list_store_remove (self->columns, i); break; } } } - else - gtk_column_view_column_set_column_view (column, self); g_list_store_insert (self->columns, position, column); + gtk_column_view_column_set_column_view (column, self); + + if (old_position != -1 && position != old_position) + gtk_column_view_column_set_position (column, position); + gtk_column_view_column_queue_resize (column); g_object_unref (column);