Mercurial > pidgin.yaz
diff src/conversation.c @ 1898:73d73939f698
[gaim-migrate @ 1908]
this is part one of three.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Mon, 28 May 2001 03:36:04 +0000 |
parents | c81f3dd0e58e |
children | 9aa7cd7f5948 |
line wrap: on
line diff
--- a/src/conversation.c Fri May 25 23:07:22 2001 +0000 +++ b/src/conversation.c Mon May 28 03:36:04 2001 +0000 @@ -150,6 +150,8 @@ c->history = g_string_new(""); conversations = g_list_append(conversations, c); show_conv(c); + if (c->gc && c->gc->prpl && c->gc->prpl->insert_convo) + (*c->gc->prpl->insert_convo)(c->gc, c); plugin_event(event_new_conversation, name, 0, 0, 0); return c; } @@ -420,6 +422,8 @@ c->window = NULL; } } else { + if (c->gc && c->gc->prpl && c->gc->prpl->remove_convo) + (*c->gc->prpl->remove_convo)(c->gc, c); if (display_options & OPT_DISP_ONE_CHAT_WINDOW) { if (g_list_length(chats) > 1) { gtk_notebook_remove_page(GTK_NOTEBOOK(chat_notebook), @@ -1755,12 +1759,22 @@ return toolbar; } -static void convo_sel_send(GtkObject * m, struct gaim_connection *c) +static void convo_sel_send(GtkObject *m, struct gaim_connection *c) { struct conversation *cnv = gtk_object_get_user_data(m); + + if (cnv->gc == c) + return; + + if (cnv->gc && cnv->gc->prpl && cnv->gc->prpl->remove_convo) + (*cnv->gc->prpl->remove_convo)(cnv->gc, cnv); + cnv->gc = c; update_buttons_by_protocol(cnv); + + if (cnv->gc && cnv->gc->prpl && cnv->gc->prpl->insert_convo) + (*cnv->gc->prpl->insert_convo)(cnv->gc, cnv); } void update_convo_add_button(struct conversation *c) @@ -1846,17 +1860,34 @@ while (c) { C = (struct conversation *)c->data; + c = c->next; + create_convo_menu(C); - if (connections) - C->gc = (struct gaim_connection *)connections->data; - else - C->gc = NULL; + if (g_slist_index(connections, C->gc) < 0) + continue; + + set_convo_gc(C, connections ? connections->data : NULL); + } +} + +void set_convo_gc(struct conversation *c, struct gaim_connection *gc) +{ + if (c->gc == gc) + return; - update_buttons_by_protocol(C); + if (c->gc && c->gc->prpl && c->gc->prpl->remove_convo) + (*c->gc->prpl->remove_convo)(c->gc, c); + + c->gc = gc; - c = c->next; - } + if (gc) + gtk_option_menu_set_history(GTK_OPTION_MENU(c->menu), g_slist_index(connections, gc)); + + update_buttons_by_protocol(c); + + if (c->gc && c->gc->prpl && c->gc->prpl->insert_convo) + (*c->gc->prpl->insert_convo)(c->gc, c); } void update_buttons_by_protocol(struct conversation *c) @@ -2075,6 +2106,10 @@ create_convo_menu(c); + c->lbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox2), c->lbox, FALSE, FALSE, 0); + gtk_widget_show(c->lbox); + entry = gtk_text_new(NULL, NULL); c->entry = entry; if (!(display_options & OPT_DISP_ONE_WINDOW)) @@ -2097,7 +2132,7 @@ gtk_box_pack_start(GTK_BOX(vbox2), entry, TRUE, TRUE, 0); gtk_widget_show(entry); - bbox = gtk_hbox_new(FALSE, 5); + c->bbox = bbox = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox2), bbox, FALSE, FALSE, 0); gtk_widget_show(bbox);