# HG changeset patch # User Eric Warmenhoven # Date 1006344975 0 # Node ID feea7103a235648de25a10f6c2f7c0ec8afae8de # Parent 318f846120e2448ad36847c246dec3dc3571344f [gaim-migrate @ 2800] i wish i had a spine committer: Tailor Script diff -r 318f846120e2 -r feea7103a235 ChangeLog --- a/ChangeLog Wed Nov 21 01:52:41 2001 +0000 +++ b/ChangeLog Wed Nov 21 12:16:15 2001 +0000 @@ -6,6 +6,7 @@ * Updated Russian translation (thanks Grigory Bakunov) * Updated Korean translation (thanks Ho-seok Lee, also for resized ICQ icons) + * Option to show aliases in conversation tabs version 0.48 (11/18/2001): * Right-click on links to open/copy URL diff -r 318f846120e2 -r feea7103a235 src/buddy.c --- a/src/buddy.c Wed Nov 21 01:52:41 2001 +0000 +++ b/src/buddy.c Wed Nov 21 12:16:15 2001 +0000 @@ -239,6 +239,7 @@ void handle_buddy_rename(struct buddy *b, char *prevname) { + struct conversation *cnv; struct buddy_show *bs; struct group_show *gs; struct group *g; @@ -255,6 +256,9 @@ g_snprintf(buf, sizeof(buf), "%s", b->name); gtk_ctree_node_set_text(GTK_CTREE(edittree), c, 0, buf); + if ((cnv = find_conversation(b->name)) != NULL) + set_convo_title(cnv); + gs = find_group_show(prevname); g = find_group_by_buddy(b->gc, b->name); diff -r 318f846120e2 -r feea7103a235 src/conversation.c --- 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) diff -r 318f846120e2 -r feea7103a235 src/gaim.h --- a/src/gaim.h Wed Nov 21 01:52:41 2001 +0000 +++ b/src/gaim.h Wed Nov 21 12:16:15 2001 +0000 @@ -242,6 +242,7 @@ #define OPT_IM_SIDE_TAB 0x00000020 #define OPT_IM_BR_TAB 0x00000040 #define OPT_IM_HIDE_ICONS 0x00000080 +#define OPT_IM_ALIAS_TAB 0x00002000 extern guint chat_options; #define OPT_CHAT_ONE_WINDOW 0x00000001 diff -r 318f846120e2 -r feea7103a235 src/prefs.c --- a/src/prefs.c Wed Nov 21 01:52:41 2001 +0000 +++ b/src/prefs.c Wed Nov 21 12:16:15 2001 +0000 @@ -906,6 +906,7 @@ vbox2); gaim_button(_("Raise windows on events"), &im_options, OPT_IM_POPUP, vbox2); gaim_button(_("Show logins in window"), &im_options, OPT_IM_LOGON, vbox2); + gaim_button(_("Show aliases in tabs"), &im_options, OPT_IM_ALIAS_TAB, vbox2); frame = gtk_frame_new(_("Window Sizes")); gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5); @@ -2629,6 +2630,9 @@ if (option == OPT_IM_HIDE_ICONS) set_hide_icons(); + if (option == OPT_IM_ALIAS_TAB) + set_convo_titles(); + save_prefs(); } diff -r 318f846120e2 -r feea7103a235 src/server.c --- a/src/server.c Wed Nov 21 01:52:41 2001 +0000 +++ b/src/server.c Wed Nov 21 12:16:15 2001 +0000 @@ -665,34 +665,7 @@ /* server with what's in our record. We want to */ /* store things how THEY want it... */ if (strcmp(name, b->name)) { - GList *cnv = conversations; - struct conversation *cv; - - char *who = g_malloc(80); - - strcpy(who, normalize(name)); - - while (cnv) { - cv = (struct conversation *)cnv->data; - if (!g_strcasecmp(who, normalize(cv->name))) { - if (im_options & OPT_IM_ONE_WINDOW) { - set_convo_tab_label(cv, b->name); - } else { - g_snprintf(cv->name, sizeof(cv->name), "%s", name); - if (find_log_info(name) || (logging_options & OPT_LOG_ALL)) - g_snprintf(who, 63, LOG_CONVERSATION_TITLE, name); - else - g_snprintf(who, 63, CONVERSATION_TITLE, name); - gtk_window_set_title(GTK_WINDOW(cv->window), who); - /* was g_free(buf), but break gives us that - * and freeing twice is not good --Sumner */ - break; - } - } - cnv = cnv->next; - } - g_free(who); - who = g_strdup(b->name); + char *who = g_strdup(b->name); g_snprintf(b->name, sizeof(b->name), "%s", name); handle_buddy_rename(b, who); g_free(who); diff -r 318f846120e2 -r feea7103a235 src/ui.h --- a/src/ui.h Wed Nov 21 01:52:41 2001 +0000 +++ b/src/ui.h Wed Nov 21 12:16:15 2001 +0000 @@ -336,7 +336,7 @@ extern void gaim_setup_imhtml(GtkWidget *); extern void update_convo_add_button(struct conversation *); extern void raise_convo_tab(struct conversation *); -extern void set_convo_tab_label(struct conversation *, char *); +extern void set_convo_title(struct conversation *); extern void show_conv(struct conversation *); extern struct conversation *new_conversation(char *); extern void delete_conversation(struct conversation *); @@ -373,6 +373,7 @@ extern void update_convo_color(); extern void update_convo_font(); extern void set_hide_icons(); +extern void set_convo_titles(); /* Functions in dialogs.c */ extern void alias_dialog_bud(struct buddy *);