# HG changeset patch # User Eric Warmenhoven # Date 960537540 0 # Node ID 9bf1f77985d2d7c1514da3a03447929b1d7b14bb # Parent c457f47fbb1dd0fb17d0fd5f2a6e101ab01f1e3a [gaim-migrate @ 378] chat works properly now. it wasn't even working properly on the toc side, but the toc server was more lenient. committer: Tailor Script diff -r c457f47fbb1d -r 9bf1f77985d2 src/buddy_chat.c --- a/src/buddy_chat.c Thu Jun 08 07:04:58 2000 +0000 +++ b/src/buddy_chat.c Fri Jun 09 07:59:00 2000 +0000 @@ -279,14 +279,15 @@ static void close_callback(GtkWidget *widget, struct buddy_chat *b) { - serv_chat_leave(b->id); - if (b->window) gtk_widget_destroy(b->window); b->window = NULL; + + serv_chat_leave(b->id); } + static void whisper_callback(GtkWidget *widget, struct buddy_chat *b) { char buf[BUF_LEN*4]; diff -r c457f47fbb1d -r 9bf1f77985d2 src/server.c --- a/src/server.c Thu Jun 08 07:04:58 2000 +0000 +++ b/src/server.c Fri Jun 09 07:59:00 2000 +0000 @@ -548,8 +548,10 @@ GList *bcs = buddy_chats; struct buddy_chat *b = NULL; struct chat_connection *c = NULL; + int count = 0; while (bcs) { + count++; b = (struct buddy_chat *)bcs->data; if (id == b->id) break; @@ -560,6 +562,10 @@ if (!b) return; + sprintf(debug_buff, "Attempting to leave room %s (currently in %d rooms)\n", + b->name, count); + debug_print(debug_buff); + aim_chat_leaveroom(gaim_sess, b->name); c = find_oscar_chat(b->name); if (c != NULL) { @@ -568,6 +574,8 @@ g_free(c->name); g_free(c); } + /* we do this because with Oscar it doesn't tell us we left */ + serv_got_chat_left(b->id); #endif } @@ -950,8 +958,8 @@ if (!b) return; - if (b->window) - gtk_widget_destroy(GTK_WIDGET(b->window)); + sprintf(debug_buff, "Leaving room %s.\n", b->name); + debug_print(debug_buff); buddy_chats = g_list_remove(buddy_chats, b);