[gtk/wip/otte/sortlistmodel2: 10/16] sortlistmodel: Make sort stable again



commit c03383d3e5796e00ff167a44fdc5b0ff88bedf49
Author: Benjamin Otte <otte redhat com>
Date:   Tue Jul 21 04:06:13 2020 +0200

    sortlistmodel: Make sort stable again
    
    Previously, the sort was not stable when items were added/removed while
    sorting or the sort algorithm was changed.
    
    Now the sort looks at the item position (via the key's location in the
    keys array) to make sure each comparison stays stable with respect to
    this position.

 gtk/gtksortlistmodel.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtksortlistmodel.c b/gtk/gtksortlistmodel.c
index 37dcd6f18e..5fa3105323 100644
--- a/gtk/gtksortlistmodel.c
+++ b/gtk/gtksortlistmodel.c
@@ -255,7 +255,11 @@ sort_func (gconstpointer a,
   gpointer *sb = (gpointer *) b;
   int result;
 
-  return gtk_sort_keys_compare (data, *sa, *sb);
+  result = gtk_sort_keys_compare (data, *sa, *sb);
+  if (result)
+    return result;
+
+  return *sa < *sb ? -1 : 1;
 }
 
 static gboolean


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