Mercurial > pidgin
diff src/conversation.c @ 2787:feea7103a235
[gaim-migrate @ 2800]
i wish i had a spine
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 21 Nov 2001 12:16:15 +0000 |
parents | a0fd8f91e294 |
children | 3bf63f1882c8 |
line wrap: on
line diff
--- a/src/conversation.c Wed Nov 21 01:52:41 2001 +0000 +++ b/src/conversation.c Wed Nov 21 12:16:15 2001 +0000 @@ -60,6 +60,8 @@ #include "pixmaps/mrt.xpm" #include "pixmaps/download.xpm" +static GtkTooltips *tabtips = NULL; + static gchar *ispell_cmd[] = { "ispell", "-a", NULL }; int state_lock = 0; @@ -200,20 +202,13 @@ void rm_log(struct log_conversation *a) { struct conversation *cnv = find_conversation(a->name); - char buf[128]; log_conversations = g_list_remove(log_conversations, a); save_prefs(); - if (cnv) { - if (!(logging_options & OPT_LOG_ALL)) - g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, cnv->name); - else - g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, cnv->name); - if (!(im_options & OPT_IM_ONE_WINDOW)) - gtk_window_set_title(GTK_WINDOW(cnv->window), buf); - } + if (cnv && !(im_options & OPT_IM_ONE_WINDOW)) + set_convo_title(cnv); } struct log_conversation *find_log_info(char *name) @@ -1873,6 +1868,8 @@ cnv->gc = c; + set_convo_title(cnv); + update_buttons_by_protocol(cnv); update_icon(cnv); @@ -2029,6 +2026,8 @@ c->gc = gc; + set_convo_title(c); + update_buttons_by_protocol(c); update_icon(c); @@ -2126,7 +2125,6 @@ { GtkWidget *win; GtkWidget *cont; - char buf[256]; GtkWidget *text; GtkWidget *sw; GtkWidget *send; @@ -2160,6 +2158,7 @@ c->hasfg = 0; if (im_options & OPT_IM_ONE_WINDOW) { + GtkWidget *page; if (!all_convos) { win = all_convos = c->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_wmclass(GTK_WINDOW(win), "conversation", "Gaim"); @@ -2172,6 +2171,11 @@ GTK_SIGNAL_FUNC(delete_all_convo), NULL); convo_notebook = gtk_notebook_new(); + if (!tabtips) { + tabtips = gtk_tooltips_new(); + if (!(im_options & OPT_IM_ALIAS_TAB)) + gtk_tooltips_disable(tabtips); + } if (im_options & OPT_IM_SIDE_TAB) { if (im_options & OPT_IM_BR_TAB) { gtk_notebook_set_tab_pos(GTK_NOTEBOOK(convo_notebook), @@ -2200,8 +2204,14 @@ cont = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(cont), 5); + /* this doesn't actually matter since we're resetting it once we're out of the if/else */ gtk_notebook_append_page(GTK_NOTEBOOK(convo_notebook), cont, gtk_label_new(c->name)); gtk_widget_show(cont); + + page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(convo_notebook), + g_list_index(conversations, c)); + page = gtk_notebook_get_tab_label(GTK_NOTEBOOK(convo_notebook), page); + gtk_tooltips_set_tip(tabtips, page->parent, c->name, c->name); } else { cont = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); c->window = win; @@ -2211,14 +2221,10 @@ gtk_container_border_width(GTK_CONTAINER(win), 10); gtk_widget_realize(win); aol_icon(win->window); - if ((find_log_info(c->name)) || ((logging_options & OPT_LOG_ALL))) - g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, c->name); - else - g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, c->name); - gtk_window_set_title(GTK_WINDOW(win), buf); gtk_signal_connect(GTK_OBJECT(win), "delete_event", GTK_SIGNAL_FUNC(delete_event_convo), c); } + set_convo_title(c); paned = gtk_vpaned_new(); gtk_paned_set_gutter_size(GTK_PANED(paned), 15); @@ -2503,14 +2509,40 @@ } } -void set_convo_tab_label(struct conversation *c, char *text) +void set_convo_title(struct conversation *c) { - gtk_label_set_text(GTK_LABEL(gtk_notebook_get_tab_label(GTK_NOTEBOOK(convo_notebook), - gtk_notebook_get_nth_page(GTK_NOTEBOOK - (convo_notebook), - g_list_index - (conversations, - c)))), text); + struct buddy *b; + char *text; + int index; + GtkNotebook *nb; + + if (!convo_notebook) { + char buf[256]; + if ((find_log_info(c->name)) || (logging_options & OPT_LOG_ALL)) + g_snprintf(buf, sizeof(buf), LOG_CONVERSATION_TITLE, c->name); + else + g_snprintf(buf, sizeof(buf), CONVERSATION_TITLE, c->name); + gtk_window_set_title(GTK_WINDOW(c->window), buf); + return; + } + + if ((im_options & OPT_IM_ALIAS_TAB) && c->gc && ((b = find_buddy(c->gc, c->name)) != NULL)) + text = b->show; + else + text = c->name; + + nb = GTK_NOTEBOOK(convo_notebook); + index = g_list_index(conversations, c); + gtk_notebook_set_tab_label_text(nb, gtk_notebook_get_nth_page(nb, index), text); +} + +void set_convo_titles() +{ + GList *c = conversations; + while (c) { + set_convo_title(c->data); + c = c->next; + } } void raise_convo_tab(struct conversation *c)