comparison src/gtkimhtmltoolbar.c @ 10134:0aca774bef87

[gaim-migrate @ 11198] Patch 1051145, from Nathan Fredrickson, a rewrite of the smiley selection dialog: This patch replaces the smiely selection dialog with a smiley popup menu. The smileys are still arranged in a square grid. Screenshots here: http://worksintheory.org/files/gaim/smiley-menu/ One outstanding issue is with the yahoo smileys. Some of them are extra wide, and it seems that pixmap width affects menuitem height due to gtk's calculation of the "toggle size". The result is unecesseary vertical spacing. Not sure whether this is a gtk bug or not. Even with the extra vertical spacing, which only effects yahoo smiley's, I prefer this menu to the original dialog. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 23 Oct 2004 18:07:11 +0000
parents ee50e4797352
children 3855d3467437
comparison
equal deleted inserted replaced
10133:e144efd6a5be 10134:0aca774bef87
36 static GtkHBoxClass *parent_class = NULL; 36 static GtkHBoxClass *parent_class = NULL;
37 37
38 static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar) 38 static void do_bold(GtkWidget *bold, GtkIMHtmlToolbar *toolbar)
39 { 39 {
40 GObject *object; 40 GObject *object;
41 41
42 g_return_if_fail(toolbar); 42 g_return_if_fail(toolbar);
43 43
44 /* block the format_function_toggle handler */ 44 /* block the format_function_toggle handler */
45 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml))); 45 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
46 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 46 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
47 NULL, toolbar); 47 NULL, toolbar);
48 gtk_imhtml_toggle_bold(GTK_IMHTML(toolbar->imhtml)); 48 gtk_imhtml_toggle_bold(GTK_IMHTML(toolbar->imhtml));
49 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 49 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
50 NULL, toolbar); 50 NULL, toolbar);
51 g_object_unref(object); 51 g_object_unref(object);
52 52
53 gtk_widget_grab_focus(toolbar->imhtml); 53 gtk_widget_grab_focus(toolbar->imhtml);
54 } 54 }
55 55
56 static void 56 static void
57 do_italic(GtkWidget *italic, GtkIMHtmlToolbar *toolbar) 57 do_italic(GtkWidget *italic, GtkIMHtmlToolbar *toolbar)
58 { 58 {
59 GObject *object; 59 GObject *object;
60 60
61 g_return_if_fail(toolbar); 61 g_return_if_fail(toolbar);
62 62
63 /* block the format_function_toggle handler */ 63 /* block the format_function_toggle handler */
64 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml))); 64 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
65 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 65 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
66 NULL, toolbar); 66 NULL, toolbar);
67 gtk_imhtml_toggle_italic(GTK_IMHTML(toolbar->imhtml)); 67 gtk_imhtml_toggle_italic(GTK_IMHTML(toolbar->imhtml));
68 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 68 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
69 NULL, toolbar); 69 NULL, toolbar);
70 g_object_unref(object); 70 g_object_unref(object);
71 71
72 gtk_widget_grab_focus(toolbar->imhtml); 72 gtk_widget_grab_focus(toolbar->imhtml);
73 } 73 }
74 74
75 static void 75 static void
76 do_underline(GtkWidget *underline, GtkIMHtmlToolbar *toolbar) 76 do_underline(GtkWidget *underline, GtkIMHtmlToolbar *toolbar)
77 { 77 {
78 GObject *object; 78 GObject *object;
79 79
80 g_return_if_fail(toolbar); 80 g_return_if_fail(toolbar);
81 81
82 /* block the format_function_toggle handler */ 82 /* block the format_function_toggle handler */
83 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml))); 83 object = g_object_ref(G_OBJECT(GTK_IMHTML(toolbar->imhtml)));
84 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 84 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
85 NULL, toolbar); 85 NULL, toolbar);
86 gtk_imhtml_toggle_underline(GTK_IMHTML(toolbar->imhtml)); 86 gtk_imhtml_toggle_underline(GTK_IMHTML(toolbar->imhtml));
87 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL, 87 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 0, 0, NULL,
88 NULL, toolbar); 88 NULL, toolbar);
89 g_object_unref(object); 89 g_object_unref(object);
90 90
91 gtk_widget_grab_focus(toolbar->imhtml); 91 gtk_widget_grab_focus(toolbar->imhtml);
92 } 92 }
93 93
94 static void 94 static void
95 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar) 95 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar)
174 174
175 if (!toolbar->font_dialog) { 175 if (!toolbar->font_dialog) {
176 toolbar->font_dialog = gtk_font_selection_dialog_new(_("Select Font")); 176 toolbar->font_dialog = gtk_font_selection_dialog_new(_("Select Font"));
177 177
178 g_object_set_data(G_OBJECT(toolbar->font_dialog), "gaim_toolbar", toolbar); 178 g_object_set_data(G_OBJECT(toolbar->font_dialog), "gaim_toolbar", toolbar);
179 179
180 if(fontname) { 180 if(fontname) {
181 char fonttif[128]; 181 char fonttif[128];
182 g_snprintf(fonttif, sizeof(fonttif), "%s 12", fontname); 182 g_snprintf(fonttif, sizeof(fonttif), "%s 12", fontname);
183 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog), 183 gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(toolbar->font_dialog),
184 fonttif); 184 fonttif);
549 } 549 }
550 550
551 gtk_widget_grab_focus(toolbar->imhtml); 551 gtk_widget_grab_focus(toolbar->imhtml);
552 } 552 }
553 553
554 554 static void
555 static void 555 destroy_smiley_menu(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
556 close_smiley_dialog(GtkWidget *widget, GdkEvent *event, 556 {
557 GtkIMHtmlToolbar *toolbar) 557 if (toolbar->smiley_menu != NULL)
558 {
559 gtk_widget_destroy(toolbar->smiley_menu);
560 toolbar->smiley_menu = NULL;
561 }
562 }
563
564 static void
565 deactivate_smiley_menu(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
558 { 566 {
559 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE); 567 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE);
560 568 gtk_button_released(GTK_BUTTON(toolbar->smiley));
561 if (toolbar->smiley_dialog != NULL) 569 }
562 {
563 gtk_widget_destroy(toolbar->smiley_dialog);
564 toolbar->smiley_dialog = NULL;
565 }
566 }
567
568 570
569 static void 571 static void
570 insert_smiley_text(GtkWidget *widget, GtkIMHtmlToolbar *toolbar) 572 insert_smiley_text(GtkWidget *widget, GtkIMHtmlToolbar *toolbar)
571 { 573 {
572 char *smiley_text, *escaped_smiley; 574 char *smiley_text, *escaped_smiley;
577 gtk_imhtml_insert_smiley(GTK_IMHTML(toolbar->imhtml), 579 gtk_imhtml_insert_smiley(GTK_IMHTML(toolbar->imhtml),
578 GTK_IMHTML(toolbar->imhtml)->protocol_name, 580 GTK_IMHTML(toolbar->imhtml)->protocol_name,
579 escaped_smiley); 581 escaped_smiley);
580 582
581 g_free(escaped_smiley); 583 g_free(escaped_smiley);
582 close_smiley_dialog(NULL, NULL, toolbar); 584 destroy_smiley_menu(NULL, toolbar);
583 } 585 }
584 586
585 587 static void add_smiley(GtkIMHtmlToolbar *toolbar, GtkWidget *menu, int row, int col, char *filename, char *face)
586 static void add_smiley(GtkIMHtmlToolbar *toolbar, GtkWidget *table, int row, int col, char *filename, char *face)
587 { 588 {
588 GtkWidget *image; 589 GtkWidget *image;
589 GtkWidget *button; 590 GtkWidget *menuitem;
590 591
591 image = gtk_image_new_from_file(filename); 592 image = gtk_image_new_from_file(filename);
592 button = gtk_button_new(); 593 menuitem = gtk_image_menu_item_new_with_label("");
593 gtk_container_add(GTK_CONTAINER(button), image); 594 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
594 g_object_set_data(G_OBJECT(button), "smiley_text", face); 595 g_object_set_data(G_OBJECT(menuitem), "smiley_text", face);
595 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(insert_smiley_text), toolbar); 596 gtk_tooltips_set_tip(toolbar->tooltips, menuitem, face, NULL);
596 597 g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(insert_smiley_text), toolbar);
597 gtk_tooltips_set_tip(toolbar->tooltips, button, face, NULL); 598 gtk_menu_attach(GTK_MENU(menu), menuitem, col, col+1, row, row+1);
598 599 }
599 gtk_table_attach_defaults(GTK_TABLE(table), button, col, col+1, row, row+1);
600
601 /* these look really weird with borders */
602 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
603
604 gtk_widget_show(button);
605 }
606
607 600
608 static gboolean smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley) { 601 static gboolean smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley) {
609 while(list) { 602 while(list) {
610 GtkIMHtmlSmiley *cur = list->data; 603 GtkIMHtmlSmiley *cur = list->data;
611 if(!strcmp(cur->file, smiley->file)) 604 if(!strcmp(cur->file, smiley->file))
617 610
618 611
619 static void 612 static void
620 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar) 613 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
621 { 614 {
622 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) { 615 GtkWidget *menu;
623 616 GSList *smileys, *unique_smileys = NULL;
624 GtkWidget *dialog; 617 int width;
625 GtkWidget *smiley_table = NULL; 618 int row = 0, col = 0;
626 GSList *smileys, *unique_smileys = NULL; 619
627 int width; 620 destroy_smiley_menu(NULL, toolbar);
628 int row = 0, col = 0; 621
629 622 if (toolbar->sml)
630 if (toolbar->smiley_dialog) { 623 smileys = get_proto_smileys(toolbar->sml);
631 gtk_widget_grab_focus(toolbar->imhtml); 624 else
632 return; 625 smileys = get_proto_smileys(NULL);
626
627 while(smileys) {
628 GtkIMHtmlSmiley *smiley = smileys->data;
629 if(!smiley->hidden) {
630 if(smiley_is_unique(unique_smileys, smiley))
631 unique_smileys = g_slist_append(unique_smileys, smiley);
633 } 632 }
634 633 smileys = smileys->next;
635 if (toolbar->sml) 634 }
636 smileys = get_proto_smileys(toolbar->sml); 635
637 else 636 menu = gtk_menu_new();
638 smileys = get_proto_smileys(NULL); 637
639 638 if(g_slist_length(unique_smileys)) {
640 while(smileys) { 639
641 GtkIMHtmlSmiley *smiley = smileys->data; 640 width = floor(sqrt(g_slist_length(unique_smileys)));
641
642 /* build menu */
643 while(unique_smileys) {
644 GtkIMHtmlSmiley *smiley = unique_smileys->data;
642 if(!smiley->hidden) { 645 if(!smiley->hidden) {
643 if(smiley_is_unique(unique_smileys, smiley)) 646 add_smiley(toolbar, menu, row, col, smiley->file, smiley->smile);
644 unique_smileys = g_slist_append(unique_smileys, smiley); 647
648 if(++col >= width) {
649 col = 0;
650 row++;
651 }
645 } 652 }
646 smileys = smileys->next; 653 unique_smileys = unique_smileys->next;
647 } 654 }
648 655 }
649 GAIM_DIALOG(dialog); 656 else {
650 657 GtkWidget *menuitem;
651 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); 658 menuitem = gtk_menu_item_new_with_label(_("This theme has no available smileys."));
652 gtk_window_set_role(GTK_WINDOW(dialog), "smiley_dialog"); 659 gtk_widget_set_sensitive(menuitem, FALSE);
653 gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE); 660 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
654 661 }
655 if(g_slist_length(unique_smileys)) { 662
656 663 /* connect signals */
657 width = floor(sqrt(g_slist_length(unique_smileys))); 664 g_signal_connect(G_OBJECT(menu), "deactivate",
658 665 G_CALLBACK(deactivate_smiley_menu), toolbar);
659 smiley_table = gtk_table_new(width, width, TRUE); 666 g_signal_connect(G_OBJECT(menu), "selection-done",
660 667 G_CALLBACK(destroy_smiley_menu), toolbar);
661 /* pack buttons */ 668
662 669 /* show everything */
663 while(unique_smileys) { 670 gtk_widget_show_all(menu);
664 GtkIMHtmlSmiley *smiley = unique_smileys->data; 671 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
665 if(!smiley->hidden) { 672 toolbar->smiley_menu = menu;
666 add_smiley(toolbar, smiley_table, row, col, smiley->file, smiley->smile); 673
667 if(++col >= width) {
668 col = 0;
669 row++;
670 }
671 }
672 unique_smileys = unique_smileys->next;
673 }
674 }
675 else {
676 smiley_table = gtk_label_new(_("This theme has no available smileys."));
677 }
678
679 gtk_container_add(GTK_CONTAINER(dialog), smiley_table);
680
681 gtk_widget_show(smiley_table);
682
683 gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
684
685 /* connect signals */
686 g_object_set_data(G_OBJECT(dialog), "dialog_type", "smiley dialog");
687 g_signal_connect(G_OBJECT(dialog), "delete_event",
688 G_CALLBACK(close_smiley_dialog), toolbar);
689
690 /* show everything */
691 gtk_window_set_title(GTK_WINDOW(dialog), _("Smile!"));
692 gtk_widget_show_all(dialog);
693
694 toolbar->smiley_dialog = dialog;
695
696 } else if (toolbar->smiley_dialog) {
697 close_smiley_dialog(smiley, NULL, toolbar);
698 }
699 gtk_widget_grab_focus(toolbar->imhtml); 674 gtk_widget_grab_focus(toolbar->imhtml);
700 } 675 }
701 676
702 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) 677 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
703 { 678 {
758 static void reset_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar) 733 static void reset_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlToolbar *toolbar)
759 { 734 {
760 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold))) 735 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)))
761 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), FALSE, 736 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), FALSE,
762 toolbar); 737 toolbar);
763 738
764 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic))) 739 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)))
765 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), 740 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic),
766 FALSE, toolbar); 741 FALSE, toolbar);
767 742
768 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline))) 743 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)))
769 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline), 744 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->underline),
770 FALSE, toolbar); 745 FALSE, toolbar);
771 } 746 }
772 747
773 static void update_buttons(GtkIMHtmlToolbar *toolbar) { 748 static void update_buttons(GtkIMHtmlToolbar *toolbar) {
774 gboolean bold, italic, underline; 749 gboolean bold, italic, underline;
775 750
776 bold = italic = underline = FALSE; 751 bold = italic = underline = FALSE;
777 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), 752 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml),
778 &bold, &italic, &underline); 753 &bold, &italic, &underline);
779 754
780 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) 755 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold)
817 { 792 {
818 gtk_widget_destroy(toolbar->image_dialog); 793 gtk_widget_destroy(toolbar->image_dialog);
819 toolbar->image_dialog = NULL; 794 toolbar->image_dialog = NULL;
820 } 795 }
821 796
822 if (toolbar->font_dialog != NULL) 797 destroy_toolbar_font(NULL, NULL, toolbar);
823 { 798 destroy_smiley_menu(NULL, toolbar);
824 gtk_widget_destroy(toolbar->font_dialog); 799 destroy_toolbar_bgcolor(NULL, NULL, toolbar);
825 toolbar->font_dialog = NULL; 800 destroy_toolbar_fgcolor(NULL, NULL, toolbar);
826 } 801 close_link_dialog(toolbar);
827
828 if (toolbar->smiley_dialog != NULL)
829 {
830 gtk_widget_destroy(toolbar->smiley_dialog);
831 toolbar->smiley_dialog = NULL;
832 }
833
834 if (toolbar->bgcolor_dialog != NULL)
835 {
836 gtk_widget_destroy(toolbar->bgcolor_dialog);
837 toolbar->bgcolor_dialog = NULL;
838 }
839
840 if (toolbar->fgcolor_dialog != NULL)
841 {
842 gtk_widget_destroy(toolbar->fgcolor_dialog);
843 toolbar->fgcolor_dialog = NULL;
844 }
845
846 if (toolbar->link_dialog != NULL)
847 {
848 gaim_request_close(GAIM_REQUEST_FIELDS, toolbar->link_dialog);
849 toolbar->link_dialog = NULL;
850 }
851 802
852 if (toolbar->sml) 803 if (toolbar->sml)
853 free(toolbar->sml); 804 free(toolbar->sml);
854 gtk_object_sink(GTK_OBJECT(toolbar->tooltips)); 805 gtk_object_sink(GTK_OBJECT(toolbar->tooltips));
855 806
877 toolbar->imhtml = NULL; 828 toolbar->imhtml = NULL;
878 toolbar->font_dialog = NULL; 829 toolbar->font_dialog = NULL;
879 toolbar->fgcolor_dialog = NULL; 830 toolbar->fgcolor_dialog = NULL;
880 toolbar->bgcolor_dialog = NULL; 831 toolbar->bgcolor_dialog = NULL;
881 toolbar->link_dialog = NULL; 832 toolbar->link_dialog = NULL;
882 toolbar->smiley_dialog = NULL; 833 toolbar->smiley_menu = NULL;
883 toolbar->image_dialog = NULL; 834 toolbar->image_dialog = NULL;
884 835
885 toolbar->tooltips = gtk_tooltips_new(); 836 toolbar->tooltips = gtk_tooltips_new();
886 837
887 gtk_box_set_spacing(GTK_BOX(toolbar), 6); 838 gtk_box_set_spacing(GTK_BOX(toolbar), 6);
888 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); 839 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH);
889 840
890 /* Bold */ 841 /* Bold */
891 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); 842 button = gaim_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD);
1018 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY); 969 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_SMILEY);
1019 gtk_size_group_add_widget(sg, button); 970 gtk_size_group_add_widget(sg, button);
1020 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 971 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1021 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL); 972 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL);
1022 973
1023 g_signal_connect(G_OBJECT(button), "clicked", 974 g_signal_connect(G_OBJECT(button), "pressed",
1024 G_CALLBACK(insert_smiley_cb), toolbar); 975 G_CALLBACK(insert_smiley_cb), toolbar);
1025 976
1026 toolbar->smiley = button; 977 toolbar->smiley = button;
1027 978
1028 toolbar->sml = NULL; 979 toolbar->sml = NULL;
1080 update_buttons_cb(GTK_IMHTML(imhtml), buttons, toolbar); 1031 update_buttons_cb(GTK_IMHTML(imhtml), buttons, toolbar);
1081 1032
1082 bold = italic = underline = FALSE; 1033 bold = italic = underline = FALSE;
1083 1034
1084 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &underline); 1035 gtk_imhtml_get_current_format(GTK_IMHTML(imhtml), &bold, &italic, &underline);
1085 1036
1086 if(bold) 1037 if(bold)
1087 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, 1038 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold,
1088 toolbar); 1039 toolbar);
1089 1040
1090 if(italic) 1041 if(italic)
1091 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, 1042 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic,
1092 toolbar); 1043 toolbar);
1093 1044
1094 if(underline) 1045 if(underline)
1098 1049
1099 void gtk_imhtmltoolbar_associate_smileys(GtkIMHtmlToolbar *toolbar, const char *proto_id) 1050 void gtk_imhtmltoolbar_associate_smileys(GtkIMHtmlToolbar *toolbar, const char *proto_id)
1100 { 1051 {
1101 if (toolbar->sml) 1052 if (toolbar->sml)
1102 g_free(toolbar->sml); 1053 g_free(toolbar->sml);
1103 1054
1104 toolbar->sml = g_strdup(proto_id); 1055 toolbar->sml = g_strdup(proto_id);
1105 } 1056 }