libpurple/buddylist.c

changeset 41890
2c15f6e30f20
parent 41851
64d7e69bff25
child 41893
c66637c918bb
equal deleted inserted replaced
41888:9db0b73c8fab 41890:2c15f6e30f20
1582 g_object_unref(chat); 1582 g_object_unref(chat);
1583 } 1583 }
1584 1584
1585 void purple_blist_remove_group(PurpleGroup *group) 1585 void purple_blist_remove_group(PurpleGroup *group)
1586 { 1586 {
1587 PurpleAccountManager *manager = NULL;
1587 PurpleBuddyListClass *klass = NULL; 1588 PurpleBuddyListClass *klass = NULL;
1588 PurpleBuddyListPrivate *priv = NULL; 1589 PurpleBuddyListPrivate *priv = NULL;
1589 PurpleBlistNode *node; 1590 PurpleBlistNode *node;
1590 GList *l; 1591 GList *accounts = NULL;
1591 gchar* key; 1592 gchar* key;
1592 1593
1593 g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist)); 1594 g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist));
1594 g_return_if_fail(PURPLE_IS_GROUP(group)); 1595 g_return_if_fail(PURPLE_IS_GROUP(group));
1595 1596
1628 1629
1629 purple_signal_emit(purple_blist_get_handle(), "blist-node-removed", 1630 purple_signal_emit(purple_blist_get_handle(), "blist-node-removed",
1630 PURPLE_BLIST_NODE(group)); 1631 PURPLE_BLIST_NODE(group));
1631 1632
1632 /* Remove the group from all accounts that are online */ 1633 /* Remove the group from all accounts that are online */
1633 for (l = purple_connections_get_all(); l != NULL; l = l->next) 1634 manager = purple_account_manager_get_default();
1634 { 1635 accounts = purple_account_manager_get_connected(manager);
1635 PurpleConnection *gc = (PurpleConnection *)l->data; 1636 while(accounts != NULL) {
1636 1637 purple_account_remove_group(accounts->data, group);
1637 if(purple_connection_get_state(gc) == PURPLE_CONNECTION_STATE_CONNECTED) { 1638
1638 purple_account_remove_group(purple_connection_get_account(gc), group); 1639 accounts = g_list_delete_link(accounts, accounts);
1639 }
1640 } 1640 }
1641 1641
1642 /* Delete the node */ 1642 /* Delete the node */
1643 g_object_unref(group); 1643 g_object_unref(group);
1644 } 1644 }

mercurial