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