changeset 792:89ad7b530b3c

MUC: Fix completion for UTF-8 nicknames
author Mikael Berthe <mikael@lilotux.net>
date Fri, 07 Apr 2006 19:58:56 +0200
parents 6c9e8fb69965
children 898dd706cc5c
files mcabber/src/compl.c mcabber/src/roster.c mcabber/src/roster.h
diffstat 3 files changed, 22 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/compl.c	Fri Apr 07 19:40:03 2006 +0200
+++ b/mcabber/src/compl.c	Fri Apr 07 19:58:56 2006 +0200
@@ -219,7 +219,7 @@
     return compl_list(ROSTER_TYPE_USER);
   }
   if (cat_flags == COMPL_RESOURCE) {
-    return buddy_getresources(NULL);
+    return buddy_getresources_locale(NULL);
   }
   if (cat_flags == COMPL_EVENTSID) {
     return evs_geteventscomplist();
--- a/mcabber/src/roster.c	Fri Apr 07 19:40:03 2006 +0200
+++ b/mcabber/src/roster.c	Fri Apr 07 19:58:56 2006 +0200
@@ -1028,6 +1028,26 @@
   return reslist;
 }
 
+//  buddy_getresources_locale(roster_data)
+// Same as buddy_getresources() but names are converted to user's locale
+// Note: the caller should free the list (and data) after use
+GSList *buddy_getresources_locale(gpointer rosterdata)
+{
+  GSList *reslist, *lp;
+
+  reslist = buddy_getresources(rosterdata);
+  // Convert each item to UI's locale
+  for (lp = reslist; lp; lp = g_slist_next(lp)) {
+    gchar *oldname = lp->data;
+    lp->data = from_utf8(oldname);
+    if (lp->data)
+      g_free(oldname);
+    else
+      lp->data = oldname;
+  }
+  return reslist;
+}
+
 /*
 //  buddy_isresource(roster_data)
 // Return true if there is at least one resource
--- a/mcabber/src/roster.h	Fri Apr 07 19:40:03 2006 +0200
+++ b/mcabber/src/roster.h	Fri Apr 07 19:58:56 2006 +0200
@@ -125,6 +125,7 @@
 gchar   buddy_getresourceprio(gpointer rosterdata, const char *resname);
 //int   buddy_isresource(gpointer rosterdata);
 GSList *buddy_getresources(gpointer rosterdata);
+GSList *buddy_getresources_locale(gpointer rosterdata);
 void    buddy_resource_setname(gpointer rosterdata, const char *resname,
                                const char *newname);
 enum imrole buddy_getrole(gpointer rosterdata, const char *resname);