[gnome-calendar/gnome-3-36] gcal-calender-popover: Make sorting stable
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gnome-3-36] gcal-calender-popover: Make sorting stable
- Date: Thu, 2 Apr 2020 02:12:54 +0000 (UTC)
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]