comparison src/buddy.c @ 1083:12478dd1e9d7

[gaim-migrate @ 1093] yeah committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 11 Nov 2000 06:57:57 +0000
parents efcacae6acdb
children 8da0bf36fb99
comparison
equal deleted inserted replaced
1082:13df4e342cff 1083:12478dd1e9d7
268 remove_group = FALSE; 268 remove_group = FALSE;
269 g = (struct group_show *)s->data; 269 g = (struct group_show *)s->data;
270 m = g->members; 270 m = g->members;
271 while (m) { 271 while (m) {
272 b = (struct buddy_show *)m->data; 272 b = (struct buddy_show *)m->data;
273 if (g_slist_length(b->connlist) == 1 && b->connlist->data == gc) { 273 if ((g_slist_length(b->connlist) == 1) && (b->connlist->data == gc)) {
274 if (b->log_timer > 0) 274 if (b->log_timer > 0)
275 gtk_timeout_remove(b->log_timer); 275 gtk_timeout_remove(b->log_timer);
276 b->connlist = g_slist_remove(b->connlist, gc); 276 b->connlist = g_slist_remove(b->connlist, gc);
277 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); 277 gtk_container_remove(GTK_CONTAINER(g->tree), b->item);
278 g->members = g_slist_remove(g->members, b); 278 m = g->members = g_slist_remove(g->members, b);
279 if (g->members == NULL) { 279 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) {
280 shows = g_slist_remove(shows, g); 280 shows = g_slist_remove(shows, g);
281 gtk_container_remove(GTK_CONTAINER(buddies), g->item); 281 gtk_container_remove(GTK_CONTAINER(buddies), g->item);
282 g_free(g->name); 282 g_free(g->name);
283 g_free(g); 283 g_free(g);
284 m = NULL; 284 m = NULL;
285 remove_group = TRUE; 285 remove_group = TRUE;
286 } else 286 } else
287 m = g->members; 287 update_num_group(g);
288 g_free(b->name); 288 g_free(b->name);
289 g_free(b->show); 289 g_free(b->show);
290 g_free(b); 290 g_free(b);
291 } else if (g_slist_find(b->connlist, gc)) { 291 } else if (g_slist_find(b->connlist, gc)) {
292 b->connlist = g_slist_remove(b->connlist, gc); 292 if (g_slist_find(b->connlist, gc))
293 b->connlist = g_slist_remove(b->connlist, gc);
293 m = g_slist_next(m); 294 m = g_slist_next(m);
294 } else 295 } else
295 m = g_slist_next(m); 296 m = g_slist_next(m);
296 } 297 }
297 if (remove_group) 298 if (remove_group)
489 if (gs) { 490 if (gs) {
490 bs = find_buddy_show(gs, rem_b->name); 491 bs = find_buddy_show(gs, rem_b->name);
491 if (bs) { 492 if (bs) {
492 if (g_slist_find(bs->connlist, gc)) { 493 if (g_slist_find(bs->connlist, gc)) {
493 bs->connlist = g_slist_remove(bs->connlist, gc); 494 bs->connlist = g_slist_remove(bs->connlist, gc);
494 update_num_group(gs);
495 if (!g_slist_length(bs->connlist)) { 495 if (!g_slist_length(bs->connlist)) {
496 gs->members = g_slist_remove(gs->members, bs); 496 gs->members = g_slist_remove(gs->members, bs);
497 if (bs->log_timer > 0) 497 if (bs->log_timer > 0)
498 gtk_timeout_remove(bs->log_timer); 498 gtk_timeout_remove(bs->log_timer);
499 gtk_container_remove(GTK_CONTAINER(gs->tree), bs->item); 499 gtk_container_remove(GTK_CONTAINER(gs->tree), bs->item);
500 g_free(bs->show); 500 g_free(bs->show);
501 g_free(bs->name); 501 g_free(bs->name);
502 g_free(bs); 502 g_free(bs);
503 if (!g_slist_length(gs->members)) { 503 if (!g_slist_length(gs->members) &&
504 (display_options & OPT_DISP_NO_MT_GRP)) {
504 shows = g_slist_remove(shows, gs); 505 shows = g_slist_remove(shows, gs);
505 gtk_container_remove(GTK_CONTAINER(buddies), gs->item); 506 gtk_container_remove(GTK_CONTAINER(buddies), gs->item);
506 g_free(gs->name); 507 g_free(gs->name);
507 g_free(gs); 508 g_free(gs);
508 } 509 } else
509 } 510 update_num_group(gs);
511 } else
512 update_num_group(gs);
510 } 513 }
511 } 514 }
512 } 515 }
513 516
514 grp = g_slist_find(gc->groups, rem_g); 517 grp = g_slist_find(gc->groups, rem_g);
547 delg = (struct group *)grp->data; 550 delg = (struct group *)grp->data;
548 mem = delg->members; 551 mem = delg->members;
549 552
550 while(delg->members) { 553 while(delg->members) {
551 delb = (struct buddy *)delg->members->data; 554 delb = (struct buddy *)delg->members->data;
552 remove_buddy(gc, delg, delb); 555 remove_buddy(gc, delg, delb); /* this should take care of removing
556 the group_show if necessary */
553 serv_remove_buddy(gc, delb->name); 557 serv_remove_buddy(gc, delb->name);
554 } 558 }
555 559
556 gc->groups = g_slist_remove(gc->groups, delg); 560 gc->groups = g_slist_remove(gc->groups, delg);
557 g_free(delg); 561 g_free(delg);
1527 static int log_timeout(struct buddy_show *b) { 1531 static int log_timeout(struct buddy_show *b) {
1528 if (!b->connlist) { 1532 if (!b->connlist) {
1529 struct group_show *g = find_gs_by_bs(b); 1533 struct group_show *g = find_gs_by_bs(b);
1530 g->members = g_slist_remove(g->members, b); 1534 g->members = g_slist_remove(g->members, b);
1531 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); 1535 gtk_container_remove(GTK_CONTAINER(g->tree), b->item);
1532 if (g->members == NULL && (display_options & OPT_DISP_NO_MT_GRP)) { 1536 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) {
1533 shows = g_slist_remove(shows, g); 1537 shows = g_slist_remove(shows, g);
1534 gtk_container_remove(GTK_CONTAINER(buddies), g->item); 1538 gtk_container_remove(GTK_CONTAINER(buddies), g->item);
1535 g_free(g->name); 1539 g_free(g->name);
1536 g_free(g); 1540 g_free(g);
1537 } 1541 } else
1542 update_num_group(g);
1538 g_free(b->name); 1543 g_free(b->name);
1539 g_free(b->show); 1544 g_free(b->show);
1540 g_free(b); 1545 g_free(b);
1541 } else { 1546 } else {
1542 /* um.... what do we have to do here? just update the pixmap? */ 1547 /* um.... what do we have to do here? just update the pixmap? */