sortlistmodel: Make sort stable

The sort of the sortlistmodel is now stable with respect to the original
list model.

That means that if the sorter compares items as equal, the model
will make sure those items keep the order they were in in the original
model.

Or in other words: The model guarantees a total order based on the
item's position in the original model.
This commit is contained in:
Benjamin Otte 2019-12-11 01:22:20 +01:00 committed by Matthias Clasen
parent 16ab648093
commit ee3faf24b9

View File

@ -181,8 +181,14 @@ _sort_func (gconstpointer item1,
{ {
GtkSortListEntry *entry1 = (GtkSortListEntry *) item1; GtkSortListEntry *entry1 = (GtkSortListEntry *) item1;
GtkSortListEntry *entry2 = (GtkSortListEntry *) item2; GtkSortListEntry *entry2 = (GtkSortListEntry *) item2;
GtkOrdering result;
return gtk_sorter_compare (GTK_SORTER (data), entry1->item, entry2->item); result = gtk_sorter_compare (GTK_SORTER (data), entry1->item, entry2->item);
if (result == GTK_ORDERING_EQUAL)
result = g_sequence_iter_compare (entry1->unsorted_iter, entry2->unsorted_iter);
return result;
} }
static void static void