# HG changeset patch # User Gary Kramlich # Date 1543546238 0 # Node ID 7d4e3cd0bbf959818da4b9850f598ad5a2cd0a08 # Parent b357de5501984dd69061d9f991bac4865d6d565e# Parent 8b53f4ffdc1baeb8679ecece8bc3e5019918ebc1 Merged in facebook-group-chat--sort-list (pull request #428) Sort the facebook contacts by name/alias in group chat. Approved-by: Elliott Sales de Andrade Approved-by: Gary Kramlich Approved-by: Eion Robb diff -r b357de550198 -r 7d4e3cd0bbf9 libpurple/protocols/facebook/util.c --- a/libpurple/protocols/facebook/util.c Wed Nov 28 04:58:03 2018 +0000 +++ b/libpurple/protocols/facebook/util.c Fri Nov 30 02:50:38 2018 +0000 @@ -342,6 +342,28 @@ g_free(mata); } +static gint +fb_buddy_cmp(gconstpointer a, gconstpointer b) +{ + gint alias_verdict, name_verdict; + gchar *astr, *bstr; + + astr = g_utf8_casefold(purple_buddy_get_alias(a), -1); + bstr = g_utf8_casefold(purple_buddy_get_alias(b), -1); + alias_verdict = g_utf8_collate(astr, bstr); + g_free(astr); + g_free(bstr); + if (alias_verdict != 0) { + return alias_verdict; + } + astr = g_utf8_casefold(purple_buddy_get_name(a), -1); + bstr = g_utf8_casefold(purple_buddy_get_name(b), -1); + name_verdict = g_utf8_collate(astr, bstr); + g_free(astr); + g_free(bstr); + return name_verdict; +} + gpointer fb_util_request_buddy(PurpleConnection *gc, const gchar *title, const gchar *primary, const gchar *secondary, @@ -368,7 +390,7 @@ acct = purple_connection_get_account(gc); buddies = purple_blist_find_buddies(acct, NULL); - buddies = g_slist_sort(buddies, (GCompareFunc) g_ascii_strcasecmp); + buddies = g_slist_sort(buddies, fb_buddy_cmp); fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL);