From 65a793cf40a262b313803e37dcddeb509c1e5ae1 Mon Sep 17 00:00:00 2001 From: Nick Schermer Date: Mon, 28 Jul 2014 18:31:18 +0200 Subject: [PATCH] Add case insensitive sorting to the menu (bug #10594). The function is called multiple times for each element, so its probably wise to cache the casefolded names at some point if it turns out to be a performance issue. --- garcon/garcon-menu.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/garcon/garcon-menu.c b/garcon/garcon-menu.c index e23e268a..ac7cdccf 100644 --- a/garcon/garcon-menu.c +++ b/garcon/garcon-menu.c @@ -1627,8 +1627,20 @@ static gint garcon_menu_compare_items (gconstpointer *a, gconstpointer *b) { - return g_utf8_collate (garcon_menu_element_get_name (GARCON_MENU_ELEMENT (a)), - garcon_menu_element_get_name (GARCON_MENU_ELEMENT (b))); + gchar *casefold_a, *casefold_b; + gint result; + + /* do case insensitive sorting, see bug #10594 */ + /* TODO: this function is called often, maybe catch the casefolded name */ + casefold_a = g_utf8_casefold (garcon_menu_element_get_name (GARCON_MENU_ELEMENT (a)), -1); + casefold_b = g_utf8_casefold (garcon_menu_element_get_name (GARCON_MENU_ELEMENT (b)), -1); + + result = g_utf8_collate (casefold_a, casefold_b); + + g_free (casefold_a); + g_free (casefold_b); + + return result; }