diff options
Diffstat (limited to 'src/compose.c')
-rw-r--r-- | src/compose.c | 79 |
1 files changed, 53 insertions, 26 deletions
diff --git a/src/compose.c b/src/compose.c index 2455e391..5eefede0 100644 --- a/src/compose.c +++ b/src/compose.c @@ -50,6 +50,9 @@ #include <gtk/gtkvbox.h> #include <gtk/gtkcontainer.h> #include <gtk/gtktoolbar.h> +#include <gtk/gtktoolitem.h> +#include <gtk/gtktoolbutton.h> +#include <gtk/gtkseparatortoolitem.h> #include <gtk/gtktable.h> #include <gtk/gtkhbox.h> #include <gtk/gtklabel.h> @@ -4736,11 +4739,16 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) FALSE); #endif - gtk_widget_set_sensitive(compose->insert_btn, FALSE); - gtk_widget_set_sensitive(compose->attach_btn, FALSE); - gtk_widget_set_sensitive(compose->sig_btn, FALSE); - gtk_widget_set_sensitive(compose->exteditor_btn, FALSE); - gtk_widget_set_sensitive(compose->linewrap_btn, FALSE); + if (compose->insert_btn) + gtk_widget_set_sensitive(compose->insert_btn, FALSE); + if (compose->attach_btn) + gtk_widget_set_sensitive(compose->attach_btn, FALSE); + if (compose->sig_btn) + gtk_widget_set_sensitive(compose->sig_btn, FALSE); + if (compose->exteditor_btn) + gtk_widget_set_sensitive(compose->exteditor_btn, FALSE); + if (compose->linewrap_btn) + gtk_widget_set_sensitive(compose->linewrap_btn, FALSE); /* gtk_widget_set_sensitive(compose->attach_toggle, FALSE); */ @@ -4892,7 +4900,7 @@ static GtkWidget *compose_toolbar_create_from_list(Compose *compose, { GtkWidget *toolbar; GtkWidget *icon_wid; - GtkWidget *button; + GtkToolItem *toolitem; gint i; GList *cur; @@ -4900,8 +4908,6 @@ static GtkWidget *compose_toolbar_create_from_list(Compose *compose, gtk_toolbar_set_orientation(GTK_TOOLBAR(toolbar), GTK_ORIENTATION_HORIZONTAL); gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH); - gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), - GTK_ICON_SIZE_LARGE_TOOLBAR); g_signal_connect(G_OBJECT(toolbar), "button_press_event", G_CALLBACK(toolbar_button_pressed), compose); @@ -4920,9 +4926,12 @@ static GtkWidget *compose_toolbar_create_from_list(Compose *compose, for (cur = item_list; cur != NULL; cur = cur->next) { const PrefsDisplayItem *ditem = cur->data; PrefsToolbarItem *item; + GtkTooltips *tips; + gint width; if (ditem->id == T_SEPARATOR) { - gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); + toolitem = gtk_separator_tool_item_new(); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1); continue; } @@ -4933,19 +4942,31 @@ static GtkWidget *compose_toolbar_create_from_list(Compose *compose, if (item->id == -1) continue; - icon_wid = stock_pixbuf_widget(NULL, item->icon); + if (item->stock_id) { + icon_wid = gtk_image_new_from_stock + (item->stock_id, GTK_ICON_SIZE_LARGE_TOOLBAR); + } else + icon_wid = stock_pixbuf_widget(NULL, item->icon); + + toolitem = gtk_tool_button_new(icon_wid, gettext(ditem->label)); + tips = gtk_tooltips_new(); + gtk_tool_item_set_tooltip(toolitem, tips, + gettext(item->tooltip), ditem->name); + + gtkut_get_str_size(GTK_WIDGET(toolitem), gettext(ditem->label), + &width, NULL); + gtk_tool_item_set_homogeneous + (toolitem, width < 52 ? TRUE : FALSE); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - gettext(ditem->label), - gettext(item->tooltip), - ditem->name, icon_wid, - G_CALLBACK(item->callback), - compose); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1); - g_signal_connect(G_OBJECT(button), "button_press_event", + g_signal_connect(G_OBJECT(toolitem), "clicked", + G_CALLBACK(item->callback), compose); + g_signal_connect(G_OBJECT(GTK_BIN(toolitem)->child), + "button_press_event", G_CALLBACK(toolbar_button_pressed), compose); - *(GtkWidget **)item->data = button; + *(GtkWidget **)item->data = GTK_WIDGET(toolitem); } gtk_widget_show_all(toolbar); @@ -5793,14 +5814,20 @@ static void compose_set_ext_editor_sensitive(Compose *compose, menu_set_sensitive(ifactory, "/Tools/Edit with external editor", sensitive); - gtk_widget_set_sensitive(compose->text, sensitive); - gtk_widget_set_sensitive(compose->send_btn, sensitive); - gtk_widget_set_sensitive(compose->sendl_btn, sensitive); - gtk_widget_set_sensitive(compose->draft_btn, sensitive); - gtk_widget_set_sensitive(compose->insert_btn, sensitive); - gtk_widget_set_sensitive(compose->sig_btn, sensitive); - gtk_widget_set_sensitive(compose->exteditor_btn, sensitive); - gtk_widget_set_sensitive(compose->linewrap_btn, sensitive); +#define SET_SENS(w) \ + if (compose->w) \ + gtk_widget_set_sensitive(compose->w, sensitive); + + SET_SENS(text); + SET_SENS(send_btn); + SET_SENS(sendl_btn); + SET_SENS(draft_btn); + SET_SENS(insert_btn); + SET_SENS(sig_btn); + SET_SENS(exteditor_btn); + SET_SENS(linewrap_btn); + +#undef SET_SENS } /** |