[gnome-calendar] gcal-calender-popover: Make sorting stable



commit 8f0a86096685403bf2c46609fae9c960d340e0d8
Author: Kai A. Hiller <V02460 gmail com>
Date:   Mon Mar 2 23:17:57 2020 +0100

    gcal-calender-popover: Make sorting stable
    
    When multiple calendars with the same name exist, their relative order in the
    list is random and changes e.g. when toggling the checkmark next to them. The
    result is glitchy behavior.
    
    Now when two calendars have the same name we do a secondary sort by their ID,
    resulting in a nice deterministic order.

 src/gui/gcal-calendar-popover.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
---
diff --git a/src/gui/gcal-calendar-popover.c b/src/gui/gcal-calendar-popover.c
index 90a8566c..de86f54a 100644
--- a/src/gui/gcal-calendar-popover.c
+++ b/src/gui/gcal-calendar-popover.c
@@ -196,11 +196,17 @@ listbox_sort_func (GtkListBoxRow *row1,
                    gpointer       user_data)
 {
   GcalCalendar *calendar1, *calendar2;
+  gint result;
 
   calendar1 = g_object_get_data (G_OBJECT (row1), "calendar");
   calendar2 = g_object_get_data (G_OBJECT (row2), "calendar");
 
-  return g_ascii_strcasecmp (gcal_calendar_get_name (calendar1), gcal_calendar_get_name (calendar2));
+  result = g_ascii_strcasecmp (gcal_calendar_get_name (calendar1), gcal_calendar_get_name (calendar2));
+
+  if (result != 0)
+    return result;
+
+  return g_ascii_strcasecmp (gcal_calendar_get_id (calendar1), gcal_calendar_get_id (calendar2));
 }
 
 static void


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