Mercurial > pidgin.yaz
comparison pidgin/gtkimhtmltoolbar.c @ 17549:c1d67fef5eb3
Re-did the toolbar layout to take up less room. This is what we generally agreed to on devel@. I managed to do this, amazingly, not only without breaking Pidgin plugin API compatibility, but it doesn't even add any API. This is still totally raw; I'm comitting it mostly so I can continue it easily from hmoe
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Fri, 01 Jun 2007 03:20:34 +0000 |
parents | c8891ebd48db |
children | 425b83d9614d 4d53ccae32b0 |
comparison
equal
deleted
inserted
replaced
17548:95203f9325a3 | 17549:c1d67fef5eb3 |
---|---|
850 return; | 850 return; |
851 | 851 |
852 update_buttons(toolbar); | 852 update_buttons(toolbar); |
853 } | 853 } |
854 | 854 |
855 | |
856 /* This comes from gtkmenutoolbutton.c from gtk+ | |
857 * Copyright (C) 2003 Ricardo Fernandez Pascual | |
858 * Copyright (C) 2004 Paolo Borelli | |
859 */ | |
860 menu_position_func (GtkMenu *menu, | |
861 int *x, | |
862 int *y, | |
863 gboolean *push_in, | |
864 GtkWidget *widget) | |
865 { | |
866 GtkRequisition req; | |
867 GtkRequisition menu_req; | |
868 GtkOrientation orientation; | |
869 GtkTextDirection direction; | |
870 GdkRectangle monitor; | |
871 gint monitor_num; | |
872 GdkScreen *screen; | |
873 | |
874 gtk_widget_size_request (GTK_WIDGET (widget), &menu_req); | |
875 | |
876 direction = gtk_widget_get_direction (widget); | |
877 | |
878 screen = gtk_widget_get_screen (GTK_WIDGET (menu)); | |
879 monitor_num = gdk_screen_get_monitor_at_window (screen, widget->window); | |
880 if (monitor_num < 0) | |
881 monitor_num = 0; | |
882 gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); | |
883 | |
884 gdk_window_get_origin (widget->window, x, y); | |
885 *x += widget->allocation.x; | |
886 *y += widget->allocation.y; | |
887 | |
888 if (direction == GTK_TEXT_DIR_LTR) | |
889 *x += MAX (widget->allocation.width - menu_req.width, 0); | |
890 else if (menu_req.width > widget->allocation.width) | |
891 *x -= menu_req.width - widget->allocation.width; | |
892 | |
893 if ((*y + widget->allocation.height + menu_req.height) <= monitor.y + monitor.height) | |
894 *y += widget->allocation.height; | |
895 else if ((*y - menu_req.height) >= monitor.y) | |
896 *y -= menu_req.height; | |
897 else if (monitor.y + monitor.height - (*y + widget->allocation.height) > *y) | |
898 *y += widget->allocation.height; | |
899 else | |
900 *y -= menu_req.height; | |
901 *push_in = FALSE; | |
902 } | |
903 | |
904 static void pidgin_menu_clicked(GtkWidget *button, GtkMenu *menu) { | |
905 gtk_widget_show_all(menu); | |
906 gtk_menu_popup(menu, NULL, NULL, menu_position_func, button, 0, gtk_get_current_event_time()); | |
907 } | |
908 | |
909 static void pidgin_menu_deactivate(GtkWidget *menu, GtkToggleButton *button) { | |
910 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE); | |
911 } | |
912 | |
855 enum { | 913 enum { |
856 LAST_SIGNAL | 914 LAST_SIGNAL |
857 }; | 915 }; |
858 /* static guint signals [LAST_SIGNAL] = { 0 }; */ | 916 /* static guint signals [LAST_SIGNAL] = { 0 }; */ |
859 | 917 |
897 gobject_class = (GObjectClass*) class; | 955 gobject_class = (GObjectClass*) class; |
898 parent_class = gtk_type_class(GTK_TYPE_HBOX); | 956 parent_class = gtk_type_class(GTK_TYPE_HBOX); |
899 gobject_class->finalize = gtk_imhtmltoolbar_finalize; | 957 gobject_class->finalize = gtk_imhtmltoolbar_finalize; |
900 } | 958 } |
901 | 959 |
960 static void gtk_imhtmltoolbar_create_old_buttons(GtkIMHtmlToolbar *toolbar) | |
961 { | |
962 GtkWidget *button; | |
963 /* Bold */ | |
964 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); | |
965 g_signal_connect(G_OBJECT(button), "clicked", | |
966 G_CALLBACK(do_bold), toolbar); | |
967 toolbar->bold = button; | |
968 | |
969 | |
970 /* Italic */ | |
971 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); | |
972 g_signal_connect(G_OBJECT(button), "clicked", | |
973 G_CALLBACK(do_italic), toolbar); | |
974 toolbar->italic = button; | |
975 | |
976 /* Underline */ | |
977 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); | |
978 g_signal_connect(G_OBJECT(button), "clicked", | |
979 G_CALLBACK(do_underline), toolbar); | |
980 toolbar->underline = button; | |
981 | |
982 /* Increase font size */ | |
983 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_LARGER); | |
984 g_signal_connect(G_OBJECT(button), "clicked", | |
985 G_CALLBACK(do_big), toolbar); | |
986 toolbar->larger_size = button; | |
987 | |
988 /* Decrease font size */ | |
989 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER); | |
990 g_signal_connect(G_OBJECT(button), "clicked", | |
991 G_CALLBACK(do_small), toolbar); | |
992 toolbar->smaller_size = button; | |
993 | |
994 /* Font Face */ | |
995 | |
996 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FONT_FACE); | |
997 g_signal_connect(G_OBJECT(button), "clicked", | |
998 G_CALLBACK(toggle_font), toolbar); | |
999 toolbar->font = button; | |
1000 | |
1001 /* Foreground Color */ | |
1002 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FGCOLOR); | |
1003 g_signal_connect(G_OBJECT(button), "clicked", | |
1004 G_CALLBACK(toggle_fg_color), toolbar); | |
1005 toolbar->fgcolor = button; | |
1006 | |
1007 /* Background Color */ | |
1008 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_BGCOLOR); | |
1009 g_signal_connect(G_OBJECT(button), "clicked", | |
1010 G_CALLBACK(toggle_bg_color), toolbar); | |
1011 toolbar->bgcolor = button; | |
1012 | |
1013 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_LINK); | |
1014 g_signal_connect(G_OBJECT(button), "clicked", | |
1015 G_CALLBACK(insert_link_cb), toolbar); | |
1016 toolbar->link = button; | |
1017 | |
1018 /* Insert IM Image */ | |
1019 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE); | |
1020 g_signal_connect(G_OBJECT(button), "clicked", | |
1021 G_CALLBACK(insert_image_cb), toolbar); | |
1022 toolbar->image = button; | |
1023 | |
1024 /* Insert Smiley */ | |
1025 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY); | |
1026 g_signal_connect(G_OBJECT(button), "clicked", | |
1027 G_CALLBACK(insert_smiley_cb), toolbar); | |
1028 toolbar->smiley = button; | |
1029 | |
1030 | |
1031 } | |
1032 | |
902 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar) | 1033 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar) |
903 { | 1034 { |
904 GtkWidget *hbox = GTK_WIDGET(toolbar); | 1035 GtkWidget *hbox = GTK_WIDGET(toolbar); |
1036 GtkWidget *bbox; | |
1037 GtkWidget *image; | |
1038 GtkWidget *label; | |
1039 GtkWidget *insert_button; | |
1040 GtkWidget *font_button; | |
1041 GtkWidget *font_menu; | |
1042 GtkWidget *insert_menu; | |
905 GtkWidget *button; | 1043 GtkWidget *button; |
906 GtkWidget *sep; | 1044 GtkWidget *sep; |
907 GtkSizeGroup *sg; | |
908 | 1045 |
909 toolbar->imhtml = NULL; | 1046 toolbar->imhtml = NULL; |
910 toolbar->font_dialog = NULL; | 1047 toolbar->font_dialog = NULL; |
911 toolbar->fgcolor_dialog = NULL; | 1048 toolbar->fgcolor_dialog = NULL; |
912 toolbar->bgcolor_dialog = NULL; | 1049 toolbar->bgcolor_dialog = NULL; |
915 toolbar->image_dialog = NULL; | 1052 toolbar->image_dialog = NULL; |
916 | 1053 |
917 toolbar->tooltips = gtk_tooltips_new(); | 1054 toolbar->tooltips = gtk_tooltips_new(); |
918 | 1055 |
919 gtk_box_set_spacing(GTK_BOX(toolbar), 3); | 1056 gtk_box_set_spacing(GTK_BOX(toolbar), 3); |
920 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | 1057 |
1058 gtk_imhtmltoolbar_create_old_buttons(toolbar); | |
921 | 1059 |
922 /* Bold */ | 1060 /* Bold */ |
923 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); | 1061 font_button = gtk_toggle_button_new(); |
924 gtk_size_group_add_widget(sg, button); | 1062 gtk_button_set_relief(GTK_BUTTON(font_button), GTK_RELIEF_NONE); |
925 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1063 bbox = gtk_hbox_new(FALSE, 3); |
926 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Bold"), NULL); | 1064 gtk_container_add(GTK_CONTAINER(font_button), bbox); |
927 | 1065 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
928 g_signal_connect(G_OBJECT(button), "clicked", | 1066 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
929 G_CALLBACK(do_bold), toolbar); | 1067 label = gtk_label_new_with_mnemonic(_("_Font")); |
930 | 1068 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
931 toolbar->bold = button; | 1069 gtk_box_pack_start(GTK_BOX(hbox), font_button, FALSE, FALSE, 0); |
932 | 1070 gtk_widget_show_all(font_button); |
933 /* Italic */ | 1071 |
934 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); | 1072 font_menu = gtk_menu_new(); |
935 gtk_size_group_add_widget(sg, button); | 1073 |
936 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1074 button = gtk_check_menu_item_new_with_mnemonic(_("_Bold")); |
937 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Italic"), NULL); | 1075 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->bold); |
938 | 1076 gtk_menu_shell_append(font_menu, button); |
939 g_signal_connect(G_OBJECT(button), "clicked", | 1077 |
940 G_CALLBACK(do_italic), toolbar); | 1078 button = gtk_check_menu_item_new_with_mnemonic(_("_Italic")); |
941 | 1079 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->italic); |
942 toolbar->italic = button; | 1080 gtk_menu_shell_append(font_menu, button); |
943 | 1081 |
944 /* Underline */ | 1082 button = gtk_check_menu_item_new_with_mnemonic(_("_Underline")); |
945 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); | 1083 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->underline); |
946 gtk_size_group_add_widget(sg, button); | 1084 gtk_menu_shell_append(font_menu, button); |
947 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1085 |
948 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Underline"), NULL); | 1086 button = gtk_menu_item_new_with_mnemonic(_("_Larger")); |
949 | 1087 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->larger_size); |
950 g_signal_connect(G_OBJECT(button), "clicked", | 1088 gtk_menu_shell_append(font_menu, button); |
951 G_CALLBACK(do_underline), toolbar); | 1089 |
952 | 1090 button = gtk_menu_item_new_with_mnemonic(_("_Normal")); |
953 toolbar->underline = button; | 1091 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->normal_size); |
1092 gtk_menu_shell_append(font_menu, button); | |
1093 | |
1094 button = gtk_menu_item_new_with_mnemonic(_("_Smaller")); | |
1095 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->smaller_size); | |
1096 gtk_menu_shell_append(font_menu, button); | |
1097 | |
1098 button = gtk_menu_item_new_with_mnemonic(_("_Font face")); | |
1099 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->font); | |
1100 gtk_menu_shell_append(font_menu, button); | |
1101 | |
1102 button = gtk_menu_item_new_with_mnemonic(_("_Foreground color")); | |
1103 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->fgcolor); | |
1104 gtk_menu_shell_append(font_menu, button); | |
1105 | |
1106 button = gtk_menu_item_new_with_mnemonic(_("_Background color")); | |
1107 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->bgcolor); | |
1108 gtk_menu_shell_append(font_menu, button); | |
1109 | |
1110 g_signal_connect(G_OBJECT(font_button), "clicked", G_CALLBACK(pidgin_menu_clicked), font_menu); | |
1111 g_signal_connect(G_OBJECT(font_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), font_button); | |
954 | 1112 |
955 /* Sep */ | 1113 /* Sep */ |
956 sep = gtk_vseparator_new(); | 1114 sep = gtk_vseparator_new(); |
957 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | 1115 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); |
958 | 1116 gtk_widget_show_all(sep); |
959 /* Increase font size */ | 1117 |
960 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_LARGER); | 1118 /* Reset Formatting */ |
961 gtk_size_group_add_widget(sg, button); | 1119 button = gtk_toggle_button_new(); |
1120 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
1121 bbox = gtk_hbox_new(FALSE, 3); | |
1122 gtk_container_add(GTK_CONTAINER(button), bbox); | |
1123 image = gtk_image_new_from_stock(PIDGIN_STOCK_CLEAR, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); | |
1124 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); | |
1125 label = gtk_label_new_with_mnemonic(_("_Reset font")); | |
1126 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); | |
962 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1127 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
963 gtk_tooltips_set_tip(toolbar->tooltips, button, | 1128 gtk_widget_show_all(button); |
964 _("Larger font size"), NULL); | |
965 | |
966 g_signal_connect(G_OBJECT(button), "clicked", | 1129 g_signal_connect(G_OBJECT(button), "clicked", |
967 G_CALLBACK(do_big), toolbar); | 1130 G_CALLBACK(clear_formatting_cb), toolbar); |
968 | 1131 toolbar->clear = button; |
969 toolbar->larger_size = button; | |
970 | |
971 /* Decrease font size */ | |
972 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER); | |
973 gtk_size_group_add_widget(sg, button); | |
974 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
975 gtk_tooltips_set_tip(toolbar->tooltips, button, | |
976 _("Smaller font size"), NULL); | |
977 | |
978 g_signal_connect(G_OBJECT(button), "clicked", | |
979 G_CALLBACK(do_small), toolbar); | |
980 | |
981 toolbar->smaller_size = button; | |
982 | 1132 |
983 /* Sep */ | 1133 /* Sep */ |
984 sep = gtk_vseparator_new(); | 1134 sep = gtk_vseparator_new(); |
985 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | 1135 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); |
986 | 1136 gtk_widget_show_all(sep); |
987 /* Font Face */ | |
988 | |
989 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FONT_FACE); | |
990 gtk_size_group_add_widget(sg, button); | |
991 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
992 gtk_tooltips_set_tip(toolbar->tooltips, button, | |
993 _("Font face"), NULL); | |
994 | |
995 g_signal_connect(G_OBJECT(button), "clicked", | |
996 G_CALLBACK(toggle_font), toolbar); | |
997 | |
998 toolbar->font = button; | |
999 | |
1000 /* Foreground Color */ | |
1001 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FGCOLOR); | |
1002 gtk_size_group_add_widget(sg, button); | |
1003 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
1004 gtk_tooltips_set_tip(toolbar->tooltips, button, | |
1005 _("Foreground font color"), NULL); | |
1006 | |
1007 g_signal_connect(G_OBJECT(button), "clicked", | |
1008 G_CALLBACK(toggle_fg_color), toolbar); | |
1009 | |
1010 toolbar->fgcolor = button; | |
1011 | |
1012 /* Background Color */ | |
1013 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_BGCOLOR); | |
1014 gtk_size_group_add_widget(sg, button); | |
1015 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
1016 gtk_tooltips_set_tip(toolbar->tooltips, button, | |
1017 _("Background color"), NULL); | |
1018 | |
1019 g_signal_connect(G_OBJECT(button), "clicked", | |
1020 G_CALLBACK(toggle_bg_color), toolbar); | |
1021 | |
1022 toolbar->bgcolor = button; | |
1023 | |
1024 /* Sep */ | |
1025 sep = gtk_vseparator_new(); | |
1026 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
1027 | |
1028 /* Reset Formatting */ | |
1029 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_CLEAR); | |
1030 gtk_size_group_add_widget(sg, button); | |
1031 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
1032 gtk_tooltips_set_tip(toolbar->tooltips, button, | |
1033 _("Reset formatting"), NULL); | |
1034 | |
1035 g_signal_connect(G_OBJECT(button), "clicked", | |
1036 G_CALLBACK(clear_formatting_cb), toolbar); | |
1037 | |
1038 toolbar->clear = button; | |
1039 | |
1040 /* Sep */ | |
1041 sep = gtk_vseparator_new(); | |
1042 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); | |
1043 | 1137 |
1044 /* Insert Link */ | 1138 /* Insert Link */ |
1045 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_LINK); | 1139 insert_button = gtk_toggle_button_new(); |
1046 gtk_size_group_add_widget(sg, button); | 1140 gtk_button_set_relief(GTK_BUTTON(insert_button), GTK_RELIEF_NONE); |
1047 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1141 bbox = gtk_hbox_new(FALSE, 3); |
1048 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert link"), NULL); | 1142 gtk_container_add(GTK_CONTAINER(insert_button), bbox); |
1049 g_signal_connect(G_OBJECT(button), "clicked", | 1143 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
1050 G_CALLBACK(insert_link_cb), toolbar); | 1144 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
1051 | 1145 label = gtk_label_new_with_mnemonic(_("_Insert")); |
1052 toolbar->link = button; | 1146 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
1053 | 1147 gtk_box_pack_start(GTK_BOX(hbox), insert_button, FALSE, FALSE, 0); |
1054 /* Insert IM Image */ | 1148 gtk_widget_show_all(insert_button); |
1055 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE); | 1149 |
1056 gtk_size_group_add_widget(sg, button); | 1150 insert_menu = gtk_menu_new(); |
1057 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1151 |
1058 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert image"), NULL); | 1152 button = gtk_menu_item_new_with_mnemonic(_("_Smiley")); |
1059 | 1153 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->smiley); |
1060 g_signal_connect(G_OBJECT(button), "clicked", | 1154 gtk_menu_shell_append(insert_menu, button); |
1061 G_CALLBACK(insert_image_cb), toolbar); | 1155 |
1062 | 1156 button = gtk_menu_item_new_with_mnemonic(_("_Image")); |
1063 toolbar->image = button; | 1157 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->image); |
1064 | 1158 gtk_menu_shell_append(insert_menu, button); |
1065 /* Insert Smiley */ | 1159 |
1066 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY); | 1160 button = gtk_menu_item_new_with_mnemonic(_("_Link")); |
1067 gtk_size_group_add_widget(sg, button); | 1161 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gtk_button_clicked), toolbar->link); |
1068 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 1162 gtk_menu_shell_append(insert_menu, button); |
1069 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL); | 1163 |
1070 | 1164 g_signal_connect(G_OBJECT(insert_button), "clicked", G_CALLBACK(pidgin_menu_clicked), insert_menu); |
1071 g_signal_connect(G_OBJECT(button), "clicked", | 1165 g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button); |
1072 G_CALLBACK(insert_smiley_cb), toolbar); | |
1073 | |
1074 toolbar->smiley = button; | |
1075 | |
1076 toolbar->sml = NULL; | 1166 toolbar->sml = NULL; |
1077 gtk_widget_show_all(hbox); | |
1078 } | 1167 } |
1079 | 1168 |
1080 GtkWidget *gtk_imhtmltoolbar_new() | 1169 GtkWidget *gtk_imhtmltoolbar_new() |
1081 { | 1170 { |
1082 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL)); | 1171 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL)); |