Mercurial > pidgin.yaz
comparison src/buddy.c @ 1091:3d6ab4f1fa55
[gaim-migrate @ 1101]
this hopefully should fix a lot of the buddy list problems
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Mon, 13 Nov 2000 03:57:40 +0000 |
parents | f0f5c10cce63 |
children | a930439f29b1 |
comparison
equal
deleted
inserted
replaced
1090:79cdc86ef4c6 | 1091:3d6ab4f1fa55 |
---|---|
273 while (m) { | 273 while (m) { |
274 b = (struct buddy_show *)m->data; | 274 b = (struct buddy_show *)m->data; |
275 if ((g_slist_length(b->connlist) == 1) && (b->connlist->data == gc)) { | 275 if ((g_slist_length(b->connlist) == 1) && (b->connlist->data == gc)) { |
276 if (b->log_timer > 0) | 276 if (b->log_timer > 0) |
277 gtk_timeout_remove(b->log_timer); | 277 gtk_timeout_remove(b->log_timer); |
278 b->log_timer = -1; | |
278 b->connlist = g_slist_remove(b->connlist, gc); | 279 b->connlist = g_slist_remove(b->connlist, gc); |
279 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); | 280 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); |
280 m = g->members = g_slist_remove(g->members, b); | 281 m = g->members = g_slist_remove(g->members, b); |
281 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) { | 282 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) { |
282 shows = g_slist_remove(shows, g); | 283 shows = g_slist_remove(shows, g); |
324 update_keepalive(gc, FALSE); | 325 update_keepalive(gc, FALSE); |
325 serv_close(gc); | 326 serv_close(gc); |
326 | 327 |
327 if (connections) return; | 328 if (connections) return; |
328 | 329 |
330 { | |
331 GSList *s = shows; | |
332 struct group_show *g; | |
333 GSList *m; | |
334 struct buddy_show *b; | |
335 while (s) { | |
336 g = (struct group_show *)s->data; | |
337 debug_printf("group_show still exists: %s\n", g->name); | |
338 m = g->members; | |
339 while (m) { | |
340 b = (struct buddy_show *)m->data; | |
341 debug_printf("buddy_show still exists: %s\n", b->name); | |
342 m = g_slist_remove(m, b); | |
343 if (b->log_timer > 0) | |
344 gtk_timeout_remove(b->log_timer); | |
345 b->log_timer = -1; | |
346 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); | |
347 g_free(b->show); | |
348 g_free(b->name); | |
349 g_free(b); | |
350 } | |
351 gtk_container_remove(GTK_CONTAINER(buddies), g->item); | |
352 s = g_slist_remove(s, g); | |
353 g_free(g->name); | |
354 g_free(g); | |
355 } | |
356 shows = NULL; | |
357 } | |
358 | |
329 sprintf(debug_buff, "date: %s\n", full_date()); | 359 sprintf(debug_buff, "date: %s\n", full_date()); |
330 debug_print(debug_buff); | 360 debug_print(debug_buff); |
331 destroy_all_dialogs(); | 361 destroy_all_dialogs(); |
332 destroy_buddy(); | 362 destroy_buddy(); |
333 #ifdef USE_APPLET | 363 #ifdef USE_APPLET |
496 bs->connlist = g_slist_remove(bs->connlist, gc); | 526 bs->connlist = g_slist_remove(bs->connlist, gc); |
497 if (!g_slist_length(bs->connlist)) { | 527 if (!g_slist_length(bs->connlist)) { |
498 gs->members = g_slist_remove(gs->members, bs); | 528 gs->members = g_slist_remove(gs->members, bs); |
499 if (bs->log_timer > 0) | 529 if (bs->log_timer > 0) |
500 gtk_timeout_remove(bs->log_timer); | 530 gtk_timeout_remove(bs->log_timer); |
531 bs->log_timer = -1; | |
501 gtk_container_remove(GTK_CONTAINER(gs->tree), bs->item); | 532 gtk_container_remove(GTK_CONTAINER(gs->tree), bs->item); |
502 g_free(bs->show); | 533 g_free(bs->show); |
503 g_free(bs->name); | 534 g_free(bs->name); |
504 g_free(bs); | 535 g_free(bs); |
505 if (!g_slist_length(gs->members) && | 536 if (!g_slist_length(gs->members) && |
1537 | 1568 |
1538 static gint log_timeout(struct buddy_show *b) { | 1569 static gint log_timeout(struct buddy_show *b) { |
1539 if (!b->connlist) { | 1570 if (!b->connlist) { |
1540 struct group_show *g = find_gs_by_bs(b); | 1571 struct group_show *g = find_gs_by_bs(b); |
1541 g->members = g_slist_remove(g->members, b); | 1572 g->members = g_slist_remove(g->members, b); |
1542 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); | 1573 if (blist) |
1574 gtk_container_remove(GTK_CONTAINER(g->tree), b->item); | |
1575 else | |
1576 debug_printf("log_timeout but buddy list not available\n"); | |
1543 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) { | 1577 if ((g->members == NULL) && (display_options & OPT_DISP_NO_MT_GRP)) { |
1544 shows = g_slist_remove(shows, g); | 1578 shows = g_slist_remove(shows, g); |
1545 gtk_container_remove(GTK_CONTAINER(buddies), g->item); | 1579 if (blist) |
1580 gtk_container_remove(GTK_CONTAINER(buddies), g->item); | |
1546 g_free(g->name); | 1581 g_free(g->name); |
1547 g_free(g); | 1582 g_free(g); |
1548 } | 1583 } |
1549 g_free(b->name); | 1584 g_free(b->name); |
1550 g_free(b->show); | 1585 g_free(b->show); |
1566 if (ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER) | 1601 if (ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER) |
1567 BuddyTickerSetPixmap(b->name, pm, bm); | 1602 BuddyTickerSetPixmap(b->name, pm, bm); |
1568 gdk_pixmap_unref(pm); | 1603 gdk_pixmap_unref(pm); |
1569 gdk_bitmap_unref(bm); | 1604 gdk_bitmap_unref(bm); |
1570 } | 1605 } |
1606 gtk_timeout_remove(b->log_timer); | |
1571 b->log_timer = -1; | 1607 b->log_timer = -1; |
1572 return FALSE; | 1608 return 0; |
1573 } | 1609 } |
1574 | 1610 |
1575 static char *caps_string(gushort caps) | 1611 static char *caps_string(gushort caps) |
1576 { | 1612 { |
1577 static char buf[256], *tmp; | 1613 static char buf[256], *tmp; |
1725 gdk_pixmap_unref(pm); | 1761 gdk_pixmap_unref(pm); |
1726 gdk_bitmap_unref(bm); | 1762 gdk_bitmap_unref(bm); |
1727 b->present = 2; | 1763 b->present = 2; |
1728 if (bs->log_timer > 0) | 1764 if (bs->log_timer > 0) |
1729 gtk_timeout_remove(bs->log_timer); | 1765 gtk_timeout_remove(bs->log_timer); |
1766 bs->log_timer = -1; | |
1730 if (!g_slist_find(bs->connlist, gc)) | 1767 if (!g_slist_find(bs->connlist, gc)) |
1731 bs->connlist = g_slist_append(bs->connlist, gc); | 1768 bs->connlist = g_slist_append(bs->connlist, gc); |
1732 else | 1769 else |
1733 debug_printf("already got signon for %s from %s\n", b->name, gc->username); | 1770 debug_printf("already got signon for %s from %s\n", b->name, gc->username); |
1734 update_num_group(gs); | 1771 update_num_group(gs); |