Mercurial > pidgin
comparison src/buddy.c @ 912:5a517b4f0be4
[gaim-migrate @ 922]
no more hanging trees, only electric chairs.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 14 Sep 2000 23:22:11 +0000 |
parents | 2876c40108cd |
children | 8de59874f5ce |
comparison
equal
deleted
inserted
replaced
911:65c8bd1feec5 | 912:5a517b4f0be4 |
---|---|
196 { | 196 { |
197 GList *grp = groups; | 197 GList *grp = groups; |
198 GList *mem; | 198 GList *mem; |
199 struct buddy *b; | 199 struct buddy *b; |
200 struct group *g; | 200 struct group *g; |
201 int count; | |
201 | 202 |
202 while(grp) { | 203 while(grp) { |
203 g = (struct group *)grp->data; | 204 g = (struct group *)grp->data; |
205 count = 0; | |
204 mem = g->members; | 206 mem = g->members; |
205 while(mem) { | 207 while(mem) { |
206 b = (struct buddy *)mem->data; | 208 b = (struct buddy *)mem->data; |
207 | 209 |
208 if (b->present || !GTK_WIDGET_VISIBLE(b->item)) | 210 if (b->present || !GTK_WIDGET_VISIBLE(b->item)) |
209 set_buddy(b); | 211 set_buddy(b); |
210 | 212 |
213 if (b->present) count++; | |
214 | |
211 mem = mem->next; | 215 mem = mem->next; |
212 } | 216 } |
217 /* this is a fall-back in case we missed any */ | |
218 if (!count) gtk_widget_hide(g->item); | |
219 else gtk_widget_show(g->item); | |
220 | |
213 grp = grp->next; | 221 grp = grp->next; |
214 } | 222 } |
215 | 223 |
216 | 224 |
217 } | 225 } |
469 | 477 |
470 void remove_buddy(struct group *rem_g, struct buddy *rem_b) | 478 void remove_buddy(struct group *rem_g, struct buddy *rem_b) |
471 { | 479 { |
472 GList *grp; | 480 GList *grp; |
473 GList *mem; | 481 GList *mem; |
482 struct buddy *b; | |
483 int count = 0; | |
474 | 484 |
475 struct group *delg; | 485 struct group *delg; |
476 struct buddy *delb; | 486 struct buddy *delb; |
477 | 487 |
478 grp = g_list_find(groups, rem_g); | 488 grp = g_list_find(groups, rem_g); |
484 | 494 |
485 gtk_tree_remove_items(GTK_TREE(delg->tree), g_list_append(NULL, delb->item)); | 495 gtk_tree_remove_items(GTK_TREE(delg->tree), g_list_append(NULL, delb->item)); |
486 delg->members = g_list_remove(delg->members, delb); | 496 delg->members = g_list_remove(delg->members, delb); |
487 serv_remove_buddy(delb->name); | 497 serv_remove_buddy(delb->name); |
488 g_free(delb); | 498 g_free(delb); |
499 mem = delg->members; | |
500 while (mem && !count) { | |
501 b = (struct buddy *)mem->data; | |
502 if (b->present) count++; | |
503 mem = mem->next; | |
504 } | |
505 if (!count) gtk_widget_hide(delg->item); | |
506 | |
489 | 507 |
490 serv_save_config(); | 508 serv_save_config(); |
491 | 509 |
492 // flush buddy list to cache | 510 // flush buddy list to cache |
493 | 511 |
576 | 594 |
577 | 595 |
578 if (!parent) { | 596 if (!parent) { |
579 GList *grps, *buds; | 597 GList *grps, *buds; |
580 struct group *g, *g2; | 598 struct group *g, *g2; |
581 GList *tmp; | 599 GList *tmp, *mem; |
582 int pos; | 600 int pos, count; |
583 struct buddy *b; | 601 struct buddy *b; |
584 /* Okay we've moved group order... */ | 602 /* Okay we've moved group order... */ |
585 | 603 |
586 g = find_group(source); | 604 g = find_group(source); |
587 | 605 |
607 g_list_free(tmp); | 625 g_list_free(tmp); |
608 | 626 |
609 groups = g_list_remove(groups, g); | 627 groups = g_list_remove(groups, g); |
610 | 628 |
611 g->item = gtk_tree_item_new_with_label(g->name); | 629 g->item = gtk_tree_item_new_with_label(g->name); |
612 gtk_widget_show(g->item); | 630 mem = g->members; count = 0; |
631 while (mem && !count) { | |
632 b = (struct buddy *)mem->data; | |
633 if (b->present) count++; | |
634 mem = mem->next; | |
635 } | |
636 if (!count) gtk_widget_show(g->item); | |
613 | 637 |
614 if (sibling) { | 638 if (sibling) { |
615 g2 = find_group(target2); | 639 g2 = find_group(target2); |
616 pos = g_list_index(groups, g2); | 640 pos = g_list_index(groups, g2); |
617 if (pos == 0) { | 641 if (pos == 0) { |
713 | 737 |
714 gtk_ctree_expand(ctree, parent); | 738 gtk_ctree_expand(ctree, parent); |
715 | 739 |
716 update_num_groups(); | 740 update_num_groups(); |
717 update_show_idlepix(); | 741 update_show_idlepix(); |
718 if (b->present) | 742 if (b->present) { |
743 GList *mem = old_g->members; | |
744 struct buddy *bt; | |
745 int count = 0; | |
746 while (mem && !count) { | |
747 bt = (struct buddy *)mem->data; | |
748 if (bt->present) count++; | |
749 mem = mem->next; | |
750 } | |
751 if (!count) gtk_widget_hide(old_g->item); | |
719 gtk_widget_show(new_g->item); | 752 gtk_widget_show(new_g->item); |
753 } | |
720 set_buddy(b); | 754 set_buddy(b); |
721 | 755 |
722 | 756 |
723 | 757 |
724 | 758 |