diff pidgin/gtkblist.c @ 26283:31f0fece7502

propagate from branch 'im.pidgin.pidgin' (head d70375c084af2336e7fc6646fb778120b05de9a8) to branch 'im.pidgin.cpw.darkrain42.buddy-add' (head fa0c982c0252e44f0310912b9dc35ca8d6334b51)
author Paul Aurich <paul@darkrain42.org>
date Sat, 21 Mar 2009 03:49:51 +0000
parents c0115655a94e 9ea3474065dc
children e9b77a8bfde4
line wrap: on
line diff
--- a/pidgin/gtkblist.c	Fri Mar 20 06:01:48 2009 +0000
+++ b/pidgin/gtkblist.c	Sat Mar 21 03:49:51 2009 +0000
@@ -6701,14 +6701,27 @@
 			whoalias = NULL;
 
 		g = NULL;
-		if ((grp != NULL) && (*grp != '\0') && ((g = purple_find_group(grp)) == NULL))
+		if ((grp != NULL) && (*grp != '\0'))
 		{
-			g = purple_group_new(grp);
-			purple_blist_add_group(g, NULL);
-		}
-
-		b = purple_buddy_new(data->account, who, whoalias);
-		purple_blist_add_buddy(b, NULL, g, NULL);
+			if ((g = purple_find_group(grp)) == NULL)
+			{
+				g = purple_group_new(grp);
+				purple_blist_add_group(g, NULL);
+			}
+
+			b = purple_find_buddy_in_group(data->account, who, g);
+		}
+		else if ((b = purple_find_buddy(data->account, who)) != NULL)
+		{
+				g = purple_buddy_get_group(b);
+		}
+
+		if (b == NULL)
+		{
+			b = purple_buddy_new(data->account, who, whoalias);
+			purple_blist_add_buddy(b, NULL, g, NULL);
+		}
+
 		purple_account_add_buddy(data->account, b);
 
 		/* Offer to merge people with the same alias. */