Merged in facebook-group-chat--sort-list (pull request #428)

Fri, 30 Nov 2018 02:50:38 +0000

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 30 Nov 2018 02:50:38 +0000
changeset 39338
7d4e3cd0bbf9
parent 39335
b357de550198 (current diff)
parent 39337
8b53f4ffdc1b (diff)
child 39339
c3977899ce84

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

--- 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);

mercurial