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



commit c992c6c12d7cff304f8f90f976d971da9fbbbb30
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]