From 3b7aed050d5dcdd9826699bf14ce709787aaf40a Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Sun, 24 Jul 2011 18:46:46 +0200 Subject: [PATCH] Correct ref transfer in GtkTreeModelFilter rows-reordered handling --- gtk/gtktreemodelfilter.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c index cb51fe535..75f486db3 100644 --- a/gtk/gtktreemodelfilter.c +++ b/gtk/gtktreemodelfilter.c @@ -2475,6 +2475,7 @@ gtk_tree_model_filter_rows_reordered (GtkTreeModel *c_model, gint *tmp_array; gint i, j, elt_count; gint length; + gint first_elt_new_index = -1; GArray *new_array; @@ -2610,6 +2611,9 @@ gtk_tree_model_filter_rows_reordered (GtkTreeModel *c_model, if (!e) continue; + if (old_offset == 0) + first_elt_new_index = elt_count; + tmp_array[elt_count] = old_offset; g_array_append_val (new_array, *e); g_array_index (new_array, FilterElt, elt_count).offset = i; @@ -2630,10 +2634,10 @@ gtk_tree_model_filter_rows_reordered (GtkTreeModel *c_model, /* Transfer the reference from the old item at position 0 to the * new item at position 0. */ - if (tmp_array[0] != 0) + if (first_elt_new_index != -1 && first_elt_new_index != 0) gtk_tree_model_filter_level_transfer_first_ref (filter, level, - tmp_array[0], 0); + first_elt_new_index, 0); /* emit rows_reordered */ -- 2.43.2