aboutsummaryrefslogtreecommitdiffstats
path: root/src/gtkutil.c
diff options
context:
space:
mode:
authorJan Djärv2006-12-03 11:44:33 +0000
committerJan Djärv2006-12-03 11:44:33 +0000
commitff24abfeebacd383438b5f599bdfd82cf1412785 (patch)
treeeb3b41fd1b8385dea180aa345cf4256429de89ca /src/gtkutil.c
parenta3893a90dcda3128172641874b99a788b43b76f1 (diff)
downloademacs-ff24abfeebacd383438b5f599bdfd82cf1412785.tar.gz
emacs-ff24abfeebacd383438b5f599bdfd82cf1412785.zip
(update_frame_tool_bar): Handle modifying a toolbar item
without an image.
Diffstat (limited to 'src/gtkutil.c')
-rw-r--r--src/gtkutil.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index f7b9f8c18f9..6fd18882a74 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -3684,6 +3684,9 @@ update_frame_tool_bar (f)
3684 struct image *img; 3684 struct image *img;
3685 Lisp_Object image; 3685 Lisp_Object image;
3686 GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0; 3686 GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0;
3687 GtkToolItem *ti = NULL;
3688 GtkWidget *wvbox;
3689 GList *chlist;
3687 3690
3688 if (iter) iter = g_list_next (iter); 3691 if (iter) iter = g_list_next (iter);
3689 3692
@@ -3723,22 +3726,40 @@ update_frame_tool_bar (f)
3723 if (wicon) 3726 if (wicon)
3724 gtk_widget_hide (wicon); 3727 gtk_widget_hide (wicon);
3725 else 3728 else
3729 /* Insert an empty (non-image) button */
3726 gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), 3730 gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget),
3727 gtk_tool_button_new (NULL, ""), 3731 gtk_tool_button_new (NULL, ""),
3728 i); 3732 i);
3729 continue; 3733 continue;
3730 } 3734 }
3731 3735
3732 if (! wicon) 3736 if (wicon)
3733 { 3737 {
3734 GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL); 3738 /* The child of the tool bar is a button. Inside that button
3735 GtkToolItem *ti = gtk_tool_button_new (w, ""); 3739 is a vbox. Inside that vbox is the GtkImage. */
3740 wvbox = gtk_bin_get_child (GTK_BIN (wicon));
3741 chlist = gtk_container_get_children (GTK_CONTAINER (wvbox));
3742 if (chlist == NULL)
3743 /* In this case, we inserted an empty button (above) with no image */
3744 ti = GTK_TOOL_ITEM (wicon);
3745 }
3736 3746
3747 if (! wicon || ti != NULL)
3748 {
3749 GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL);
3737 gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin); 3750 gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin);
3738 3751
3739 gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), 3752
3740 ti, 3753 if (ti == NULL)
3741 i); 3754 {
3755 ti = gtk_tool_button_new (w, "");
3756
3757 gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), ti, i);
3758 }
3759 else
3760 gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (ti), w);
3761
3762
3742 /* The EMACS_INT cast avoids a warning. */ 3763 /* The EMACS_INT cast avoids a warning. */
3743 g_signal_connect (GTK_WIDGET (ti), "clicked", 3764 g_signal_connect (GTK_WIDGET (ti), "clicked",
3744 GTK_SIGNAL_FUNC (xg_tool_bar_callback), 3765 GTK_SIGNAL_FUNC (xg_tool_bar_callback),