[PATCH] Fix list model reordering problems



We've had a few bug reports about list model crashers when changing the
sort criterion, with expanded nested subdirectories. It turns out that
the way gtk_tree_model_rows_reordered was invoked was only appropriate
before we had path depths > 0.

Proposed patch attached. I've decided to do an assert since looking up
the iter really shouldn't fail.

-- 
Christian Neumair <chris gnome-de org>
Index: src/file-manager/fm-list-model.c
===================================================================
RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-model.c,v
retrieving revision 1.44
diff -u -p -r1.44 fm-list-model.c
--- src/file-manager/fm-list-model.c	6 Jul 2005 12:18:28 -0000	1.44
+++ src/file-manager/fm-list-model.c	1 Oct 2005 11:43:49 -0000
@@ -572,10 +572,12 @@ static void
 fm_list_model_sort_file_entries (FMListModel *model, GSequence *files, GtkTreePath *path)
 {
 	GSequencePtr *old_order;
+	GtkTreeIter iter;
 	int *new_order;
 	int length;
 	int i;
 	FileEntry *file_entry;
+	gboolean has_iter;
 
 	length = g_sequence_get_length (files);
 
@@ -611,8 +613,15 @@ fm_list_model_sort_file_entries (FMListM
 	/* Let the world know about our new order */
 
 	g_assert (new_order != NULL);
+
+	has_iter = FALSE;
+	if (gtk_tree_path_get_depth (path) != 0) {
+		has_iter = TRUE;
+		g_assert (gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &iter, path));
+	}
+
 	gtk_tree_model_rows_reordered (GTK_TREE_MODEL (model),
-				       path, NULL, new_order);
+				       path, has_iter ? &iter : NULL, new_order);
 
 	g_free (old_order);
 	g_free (new_order);

Attachment: signature.asc
Description: This is a digitally signed message part



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