Mercurial > pidgin.yaz
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. */