Mercurial > pidgin
diff src/conversation.c @ 311:0a8b4edc4732
[gaim-migrate @ 321]
Per-conversation font and color dialogs. Thanks fflew! :)
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 02 Jun 2000 06:08:29 +0000 |
parents | 97cdac04c0f5 |
children | 68637b451377 |
line wrap: on
line diff
--- a/src/conversation.c Fri Jun 02 05:33:39 2000 +0000 +++ b/src/conversation.c Fri Jun 02 06:08:29 2000 +0000 @@ -208,6 +208,10 @@ void delete_conversation(struct conversation *cnv) { conversations = g_list_remove(conversations, cnv); + if (cnv->color_dialog) + gtk_widget_destroy(cnv->color_dialog); + if (cnv->font_dialog) + gtk_widget_destroy(cnv->font_dialog); g_free(cnv); } @@ -246,8 +250,8 @@ if (c->strike) gtk_widget_set_sensitive(c->strike, ((font_options & OPT_FONT_STRIKE)) ? FALSE : TRUE); - if (c->font) - gtk_widget_set_sensitive(c->font, ((font_options & OPT_FONT_FACE)) ? TRUE : FALSE); +/* if (c->font) + gtk_widget_set_sensitive(c->font, ((font_options & OPT_FONT_FACE)) ? TRUE : FALSE);*/ cnv = cnv->next; } @@ -340,7 +344,6 @@ delete_conversation(c); return FALSE; } - static void color_callback(GtkWidget *widget, struct conversation *c) { @@ -492,8 +495,9 @@ quiet_set(c->strike, FALSE); quiet_set(c->italic, FALSE); quiet_set(c->underline, FALSE); + quiet_set(c->font, FALSE); quiet_set(c->palette, FALSE); - quiet_set(c->link, FALSE); + quiet_set(c->link, FALSE); if (c->makesound && (sound_options & OPT_SOUND_SEND)) play_sound(SEND); @@ -669,19 +673,24 @@ gtk_widget_grab_focus(entry); } -static void toggle_color(GtkWidget *color, GtkWidget *entry) +static void toggle_color(GtkWidget *color, struct conversation *c) { - if (state_lock) + if (state_lock) return; - if (GTK_TOGGLE_BUTTON(color)->active) - show_color_dialog(entry, color); + if (GTK_TOGGLE_BUTTON(color)->active) + show_color_dialog(c, color); else - advance_past(entry, "<FONT COLOR>", "</FONT>" ); + advance_past(c->entry, "<FONT COLOR>", "</FONT>" ); } -static void toggle_font(GtkWidget *font, GtkWidget *entry) +static void toggle_font(GtkWidget *font, struct conversation *c) { - show_font_dialog(entry, font); + if (state_lock) + return; + if (GTK_TOGGLE_BUTTON(font)->active) + show_font_dialog(c, font); + else + advance_past(c->entry, "<FONT FACE>", "</FONT>"); return; } @@ -780,11 +789,18 @@ quiet_set(c->italic, FALSE); if (invert_tags(entry, "<FONT COLOR", "</FONT>", 0)) - quiet_set(c->palette, TRUE); - else if (count_tag(entry, "<FONT COLOR", "</FONT>")) - quiet_set(c->palette, TRUE); - else - quiet_set(c->palette, FALSE); + quiet_set(c->palette, TRUE); + else if (count_tag(entry, "<FONT COLOR", "</FONT>")) + quiet_set(c->palette, TRUE); + else + quiet_set(c->palette, FALSE); + + if (invert_tags(entry, "<FONT FACE", "</FONT>", 0)) + quiet_set(c->font, TRUE); + else if (count_tag(entry, "<FONT FACE", "</FONT>")) + quiet_set(c->font, TRUE); + else + quiet_set(c->font, FALSE); if (invert_tags(entry, "<A HREF", "</A>", 0)) quiet_set(c->link, TRUE); @@ -1077,8 +1093,11 @@ small = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Small", "Decrease font size", "Small", small_p, GTK_SIGNAL_FUNC(do_small), entry); normal = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Normal", "Normal font size", "Normal", normal_p, GTK_SIGNAL_FUNC(do_normal), entry); big = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Big", "Increase font size", "Big", big_p, GTK_SIGNAL_FUNC(do_big), entry); - font = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Font", "Select Font", "Font", font_p, GTK_SIGNAL_FUNC(toggle_font), entry); - gtk_object_set_user_data(GTK_OBJECT(font), c); + font = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), + GTK_TOOLBAR_CHILD_TOGGLEBUTTON, + NULL, "Font", "Select Font", + "Font", font_p, GTK_SIGNAL_FUNC(toggle_font), c); + if (!(font_options & OPT_FONT_FACE)) gtk_widget_set_sensitive(GTK_WIDGET(font), FALSE); @@ -1089,7 +1108,7 @@ palette = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, "Color", "Text Color", - "Color", palette_p, GTK_SIGNAL_FUNC(toggle_color), entry); + "Color", palette_p, GTK_SIGNAL_FUNC(toggle_color), c); wood = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, "Logging", "Enable logging", @@ -1189,9 +1208,6 @@ gtk_box_pack_start(GTK_BOX(vbox2), entry, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox2), bbox, FALSE, FALSE, 5); - - - gtk_widget_show(send); gtk_widget_show(info); gtk_widget_show(warn); @@ -1203,7 +1219,9 @@ gtk_widget_show(vbox); gtk_widget_show(entry); gtk_widget_show(text); - + + c->font_dialog = NULL; + c->color_dialog = NULL; gtk_container_add(GTK_CONTAINER(win), paned); gtk_container_border_width(GTK_CONTAINER(win), 10);