diff options
| author | Jan Djärv | 2006-12-03 11:44:33 +0000 |
|---|---|---|
| committer | Jan Djärv | 2006-12-03 11:44:33 +0000 |
| commit | ff24abfeebacd383438b5f599bdfd82cf1412785 (patch) | |
| tree | eb3b41fd1b8385dea180aa345cf4256429de89ca /src/gtkutil.c | |
| parent | a3893a90dcda3128172641874b99a788b43b76f1 (diff) | |
| download | emacs-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.c | 33 |
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), |