Mercurial > pidgin
changeset 12341:eea31c8cc9f7
[gaim-migrate @ 14645]
sf patch #1367967, from Sadrul Habib Chowdhury
"When a buddy goes offline, and that buddy-node was
being displayed in an expanded contact, or the buddy
was the only online node under a group, then the
going-out-the-door icon is not displayed. This patch is
a fix for that."
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 05 Dec 2005 04:10:08 +0000 |
parents | 11d14efe7be2 |
children | 0692d20d9d81 |
files | src/gtkblist.c |
diffstat | 1 files changed, 20 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gtkblist.c Mon Dec 05 03:53:00 2005 +0000 +++ b/src/gtkblist.c Mon Dec 05 04:10:08 2005 +0000 @@ -3874,6 +3874,7 @@ { GaimGroup *group; int count; + gboolean show = FALSE; g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP(node)); @@ -3883,7 +3884,24 @@ count = gaim_blist_get_group_size(group, FALSE); else count = gaim_blist_get_group_online_count(group); - if(gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups") || count > 0) { + + if (count > 0 || gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups")) + show = TRUE; + else { + GaimBlistNode *n; + n = node->child; + while (n && !GAIM_BLIST_NODE_IS_GROUP(n)) { + if (GAIM_BLIST_NODE_IS_BUDDY(n)) { + if (buddy_is_displayable((GaimBuddy*)n)) { + show = TRUE; + break; + } + } + n = gaim_blist_node_next(n, FALSE); + } + } + + if (show) { char *mark, *esc; GtkTreeIter iter; @@ -4042,12 +4060,7 @@ gtkparentnode = (struct _gaim_gtk_blist_node *)node->parent->ui_data; - if (gtkparentnode->contact_expanded && - (gaim_presence_is_online(buddy->presence) || - (0 /* XXX: if we just signed off, need to show logout.png */) || - (gaim_account_is_connected(buddy->account) && - gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies")) || - gaim_blist_node_get_bool(node->parent, "show_offline"))) + if (gtkparentnode->contact_expanded && buddy_is_displayable(buddy)) { GtkTreeIter iter;