# HG changeset patch # User Daniel Atallah # Date 1262750683 0 # Node ID 8aebd0e204e53cbd6dfb50cbeb9145ad5c3034da # Parent 91ac03a72875149a94bec429934579bb738f6ca8 Allow the "Bonjour" group to be renamed and function similarly to dragging the buddies into a different group. Fixes #11052 diff -r 91ac03a72875 -r 8aebd0e204e5 libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c Wed Jan 06 01:03:02 2010 +0000 +++ b/libpurple/protocols/bonjour/bonjour.c Wed Jan 06 04:04:43 2010 +0000 @@ -392,11 +392,8 @@ purple_notify_user_info_add_pair(user_info, _("XMPP Account"), bb->jid); } -static void -bonjour_group_buddy(PurpleConnection *connection, const char *who, const char *old_group, const char *new_group) -{ +static void bonjour_do_group_change(PurpleBuddy *buddy, const char *new_group) { PurpleBlistNodeFlags oldflags; - PurpleBuddy *buddy = purple_find_buddy(connection->account, who); if (buddy == NULL) return; @@ -404,13 +401,38 @@ oldflags = purple_blist_node_get_flags((PurpleBlistNode *)buddy); /* If we're moving them out of the bonjour group, make them persistent */ - if (strcmp(new_group, BONJOUR_GROUP_NAME) == 0) + if (purple_strequal(new_group, BONJOUR_GROUP_NAME)) purple_blist_node_set_flags((PurpleBlistNode *)buddy, oldflags | PURPLE_BLIST_NODE_FLAG_NO_SAVE); else purple_blist_node_set_flags((PurpleBlistNode *)buddy, oldflags ^ PURPLE_BLIST_NODE_FLAG_NO_SAVE); } +static void +bonjour_group_buddy(PurpleConnection *connection, const char *who, const char *old_group, const char *new_group) +{ + PurpleBuddy *buddy = purple_find_buddy(connection->account, who); + + bonjour_do_group_change(buddy, new_group); + +} + +static void +bonjour_rename_group(PurpleConnection *connection, const char *old_name, PurpleGroup *group, GList *moved_buddies) +{ + GList *cur; + const char *new_group; + PurpleBuddy *buddy; + + new_group = purple_group_get_name(group); + + for (cur = moved_buddies; cur; cur = cur->next) { + buddy = cur->data; + bonjour_do_group_change(buddy, new_group); + } + +} + static gboolean bonjour_can_receive_file(PurpleConnection *connection, const char *who) { @@ -478,7 +500,7 @@ NULL, /* get_cb_away */ NULL, /* alias_buddy */ bonjour_group_buddy, /* group_buddy */ - NULL, /* rename_group */ + bonjour_rename_group, /* rename_group */ NULL, /* buddy_free */ bonjour_convo_closed, /* convo_closed */ NULL, /* normalize */