# HG changeset patch # User Stu Tomlinson # Date 1107021828 0 # Node ID 0ad82505bde8381ccf55109f434e9023c7ee83d7 # Parent 7d165e1eec4de6d9a16f4e72c2e4856cb5df4081 [gaim-migrate @ 11931] Buddies can be in more than one group (at least on some protocols), so we should update their status/idle/warning/etc. in all groups. committer: Tailor Script diff -r 7d165e1eec4d -r 0ad82505bde8 src/prpl.c --- a/src/prpl.c Fri Jan 28 23:53:26 2005 +0000 +++ b/src/prpl.c Sat Jan 29 18:03:48 2005 +0000 @@ -227,102 +227,116 @@ gaim_prpl_got_user_idle(GaimAccount *account, const char *name, gboolean idle, time_t idle_time) { - GaimBuddy *buddy; - GaimPresence *presence; + GSList *l; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); g_return_if_fail(gaim_account_is_connected(account)); - if ((buddy = gaim_find_buddy(account, name)) == NULL) - return; + for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + { + GaimBuddy *buddy; + GaimPresence *presence; - presence = gaim_buddy_get_presence(buddy); + buddy = (GaimBuddy *)l->data; - gaim_presence_set_idle(presence, idle, idle_time); + presence = gaim_buddy_get_presence(buddy); + + gaim_presence_set_idle(presence, idle, idle_time); + } } void gaim_prpl_got_user_login_time(GaimAccount *account, const char *name, time_t login_time) { - GaimBuddy *buddy; - GaimPresence *presence; + GSList *l; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); - if ((buddy = gaim_find_buddy(account, name)) == NULL) - return; + for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + { + GaimBuddy *buddy; + GaimPresence *presence; + + buddy = (GaimBuddy *)l->data; - if (login_time == 0) - login_time = time(NULL); + if (login_time == 0) + login_time = time(NULL); - presence = gaim_buddy_get_presence(buddy); + presence = gaim_buddy_get_presence(buddy); - gaim_presence_set_login_time(presence, login_time); + gaim_presence_set_login_time(presence, login_time); + } } void gaim_prpl_got_user_status(GaimAccount *account, const char *name, const char *status_id, const char *attr_id, ...) { - GaimBuddy *buddy; - GaimPresence *presence; - GaimStatus *status; - GaimStatus *old_status; + GSList *l; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); g_return_if_fail(status_id != NULL); g_return_if_fail(gaim_account_is_connected(account)); - buddy = gaim_find_buddy(account, name); - if (buddy == NULL) - return; + for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + { + GaimBuddy *buddy; + GaimPresence *presence; + GaimStatus *status; + GaimStatus *old_status; - presence = gaim_buddy_get_presence(buddy); - status = gaim_presence_get_status(presence, status_id); + buddy = (GaimBuddy *)l->data; + presence = gaim_buddy_get_presence(buddy); + status = gaim_presence_get_status(presence, status_id); - g_return_if_fail(status != NULL); + g_return_if_fail(status != NULL); - if (attr_id != NULL) - { - va_list args; + if (attr_id != NULL) + { + va_list args; - va_start(args, attr_id); + va_start(args, attr_id); - while (attr_id != NULL) - { - set_value_from_arg(status, attr_id, &args); + while (attr_id != NULL) + { + set_value_from_arg(status, attr_id, &args); - attr_id = va_arg(args, char *); + attr_id = va_arg(args, char *); + } + + va_end(args); } - va_end(args); + old_status = gaim_presence_get_active_status(presence); + gaim_presence_set_status_active(presence, status_id, TRUE); + gaim_blist_update_buddy_status(buddy, old_status); } - - old_status = gaim_presence_get_active_status(presence); - gaim_presence_set_status_active(presence, status_id, TRUE); - gaim_blist_update_buddy_status(buddy, old_status); } void gaim_prpl_got_user_warning_level(GaimAccount *account, const char *name, unsigned int level) { - GaimBuddy *buddy; - GaimPresence *presence; + GSList *l; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); - if ((buddy = gaim_find_buddy(account, name)) == NULL) - return; + for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + { + GaimBuddy *buddy; + GaimPresence *presence; - presence = gaim_buddy_get_presence(buddy); + buddy = (GaimBuddy *)l->data; - gaim_presence_set_warning_level(presence, level); + presence = gaim_buddy_get_presence(buddy); + + gaim_presence_set_warning_level(presence, level); + } } void