Mercurial > pidgin.yaz
diff src/blist.c @ 6901:5ace3b44cf61
[gaim-migrate @ 7448]
fix the incorrect group online counts
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Sun, 21 Sep 2003 16:14:50 +0000 |
| parents | b5fb1d5282e5 |
| children | ed14dda65d8e |
line wrap: on
line diff
--- a/src/blist.c Sun Sep 21 01:40:16 2003 +0000 +++ b/src/blist.c Sun Sep 21 16:14:50 2003 +0000 @@ -258,12 +258,16 @@ gboolean do_timer = FALSE; if (!GAIM_BUDDY_IS_ONLINE(buddy) && presence) { + int old_present = buddy->present; buddy->present = GAIM_BUDDY_SIGNING_ON; gaim_signal_emit(gaim_blist_get_handle(), "buddy-signed-on", buddy); do_timer = TRUE; - ((GaimContact*)((GaimBlistNode*)buddy)->parent)->online++; - if(((GaimContact*)((GaimBlistNode*)buddy)->parent)->online == 1) - ((GaimGroup *)((GaimBlistNode *)buddy)->parent->parent)->online++; + + if(old_present != GAIM_BUDDY_SIGNING_OFF) { + ((GaimContact*)((GaimBlistNode*)buddy)->parent)->online++; + if(((GaimContact*)((GaimBlistNode*)buddy)->parent)->online == 1) + ((GaimGroup *)((GaimBlistNode *)buddy)->parent->parent)->online++; + } } else if(GAIM_BUDDY_IS_ONLINE(buddy) && !presence) { buddy->present = GAIM_BUDDY_SIGNING_OFF; gaim_signal_emit(gaim_blist_get_handle(), "buddy-signed-off", buddy); @@ -1354,9 +1358,9 @@ ops->update(gaimbuddylist, cnode); } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) && ((GaimBlistChat*)cnode)->account == account) { - ((GaimGroup *)gnode)->online++; - ((GaimGroup *)gnode)->currentsize++; - ops->update(gaimbuddylist, cnode); + ((GaimGroup *)gnode)->online++; + ((GaimGroup *)gnode)->currentsize++; + ops->update(gaimbuddylist, cnode); } } ops->update(gaimbuddylist, gnode);
