Mercurial > pidgin
diff src/conversation.c @ 1692:a312d64a995d
[gaim-migrate @ 1702]
and i thought i couldn't do it.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sun, 08 Apr 2001 09:26:00 +0000 |
parents | 0f7d2284296f |
children | 70f9d7cdb127 |
line wrap: on
line diff
--- a/src/conversation.c Sun Apr 08 01:27:24 2001 +0000 +++ b/src/conversation.c Sun Apr 08 09:26:00 2001 +0000 @@ -374,7 +374,7 @@ int close_callback(GtkWidget *widget, struct conversation *c) { - if (c->is_chat && (widget == c->close)) { + if (c->is_chat && (widget == c->close) && !(display_options & OPT_DISP_ONE_CHAT_WINDOW)) { GtkWidget *tmp = c->window; debug_printf("chat clicked close button\n"); c->window = NULL; @@ -387,20 +387,38 @@ if (general_options & OPT_GEN_CHECK_SPELLING) gtkspell_detach(GTK_TEXT(c->entry)); - if ((display_options & OPT_DISP_ONE_WINDOW) && (!c->is_chat)) { - if (g_list_length(conversations) > 1) { - gtk_notebook_remove_page(GTK_NOTEBOOK(convo_notebook), - g_list_index(conversations, c)); + if (!c->is_chat) { + if (display_options & OPT_DISP_ONE_WINDOW) { + if (g_list_length(conversations) > 1) { + gtk_notebook_remove_page(GTK_NOTEBOOK(convo_notebook), + g_list_index(conversations, c)); + } else { + if (c->window) + gtk_widget_destroy(c->window); + c->window = NULL; + all_convos = NULL; + } } else { if (c->window) gtk_widget_destroy(c->window); c->window = NULL; - all_convos = NULL; } } else { - if (c->window) - gtk_widget_destroy(c->window); - c->window = NULL; + if (display_options & OPT_DISP_ONE_CHAT_WINDOW) { + if (g_list_length(chats) > 1) { + gtk_notebook_remove_page(GTK_NOTEBOOK(chat_notebook), + g_list_index(chats, c)); + } else { + if (c->window) + gtk_widget_destroy(c->window); + c->window = NULL; + all_chats = NULL; + } + } else { + if (c->window) + gtk_widget_destroy(c->window); + c->window = NULL; + } } if (c->fg_color_dialog) @@ -423,6 +441,7 @@ c->log_dialog = NULL; if (c->is_chat) { + chats = g_list_remove(chats, c); if (c->gc) serv_chat_leave(c->gc, c->id); else { @@ -648,17 +667,20 @@ gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); } } - if (!c->is_chat && (display_options & OPT_DISP_ONE_WINDOW)) { + if ((!c->is_chat && (display_options & OPT_DISP_ONE_WINDOW)) || + ( c->is_chat && (display_options & OPT_DISP_ONE_CHAT_WINDOW))) { + GtkWidget *notebook = (c->is_chat ? chat_notebook : convo_notebook); if (event->keyval == '[') { - gtk_notebook_prev_page(GTK_NOTEBOOK(convo_notebook)); + gtk_notebook_prev_page(GTK_NOTEBOOK(notebook)); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); } else if (event->keyval == ']') { - gtk_notebook_next_page(GTK_NOTEBOOK(convo_notebook)); + gtk_notebook_next_page(GTK_NOTEBOOK(notebook)); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); } else if (event->keyval == GDK_Tab) { - GList *cnv = g_list_nth(conversations, + GList *ws = (c->is_chat ? chats : conversations); + GList *cnv = g_list_nth(ws, gtk_notebook_get_current_page( - GTK_NOTEBOOK(convo_notebook))); + GTK_NOTEBOOK(notebook))); struct conversation *d; while (cnv) { d = cnv->data; @@ -668,10 +690,10 @@ d = NULL; } if (d) { - gtk_notebook_set_page(GTK_NOTEBOOK(convo_notebook), - g_list_index(conversations, d)); + gtk_notebook_set_page(GTK_NOTEBOOK(notebook), + g_list_index(ws, d)); } else { - cnv = conversations; + cnv = ws; while (cnv) { d = cnv->data; if (d->unseen) @@ -681,25 +703,27 @@ } if (d) { gtk_notebook_set_page( - GTK_NOTEBOOK(convo_notebook), - g_list_index(conversations, d)); + GTK_NOTEBOOK(notebook), + g_list_index(chats, d)); } else { - cnv = g_list_last(conversations); + cnv = g_list_last(chats); if (c == cnv->data) gtk_notebook_set_page( - GTK_NOTEBOOK(convo_notebook), 0); + GTK_NOTEBOOK(notebook), 0); else gtk_notebook_next_page( - GTK_NOTEBOOK(convo_notebook)); + GTK_NOTEBOOK(notebook)); } } gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); } } - } else if (!c->is_chat && (display_options & OPT_DISP_ONE_WINDOW) && + } else if (((!c->is_chat && (display_options & OPT_DISP_ONE_WINDOW)) || + ( c->is_chat && (display_options & OPT_DISP_ONE_CHAT_WINDOW))) && (event->state & GDK_MOD1_MASK) && isdigit(event->keyval) && (event->keyval > '0')) { - gtk_notebook_set_page(GTK_NOTEBOOK(convo_notebook), event->keyval - '1'); + GtkWidget *notebook = (c->is_chat ? chat_notebook : convo_notebook); + gtk_notebook_set_page(GTK_NOTEBOOK(notebook), event->keyval - '1'); gtk_signal_emit_stop_by_name(GTK_OBJECT(entry), "key_press_event"); } @@ -1449,13 +1473,17 @@ (!c->is_chat && (general_options & OPT_GEN_POPUP_WINDOWS))) gdk_window_show(c->window->window); - if (((flags & WFLAG_RECV) || (flags & WFLAG_SYSTEM)) && !c->is_chat && - (display_options & OPT_DISP_ONE_WINDOW) && - (gtk_notebook_get_current_page(GTK_NOTEBOOK(convo_notebook)) - != g_list_index(conversations, c))) { - GtkWidget *label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(convo_notebook), - gtk_notebook_get_nth_page(GTK_NOTEBOOK(convo_notebook), - g_list_index(conversations, c))); + if (((flags & WFLAG_RECV) || (flags & WFLAG_SYSTEM)) && + ((!c->is_chat && (display_options & OPT_DISP_ONE_WINDOW) && + (gtk_notebook_get_current_page(GTK_NOTEBOOK(convo_notebook)) + != g_list_index(conversations, c))) || + ( c->is_chat && (display_options & OPT_DISP_ONE_CHAT_WINDOW) && + (gtk_notebook_get_current_page(GTK_NOTEBOOK(chat_notebook)) + != g_list_index(chats, c))))) { + GtkWidget *notebook = (c->is_chat ? chat_notebook : convo_notebook); + GList *ws = (c->is_chat ? chats : conversations); + GtkWidget *label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook), + gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), g_list_index(ws, c))); GtkStyle *style = gtk_style_new(); if (!GTK_WIDGET_REALIZED(label)) gtk_widget_realize(label);