diff options
author | Miles Bader <miles@gnu.org> | 2006-12-07 04:14:14 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2006-12-07 04:14:14 +0000 |
commit | a0451a715e4ed018a02b825d0eb823424693d1de (patch) | |
tree | d2b10fcc69c333ccc438d7a9ad116fbc1495fc9e /src/gtkutil.c | |
parent | d324f894beea8b485792c779659e8e20c1cb699d (diff) | |
parent | 12f7728e938fe5bb850ce2928637d1e349919142 (diff) | |
download | emacs-a0451a715e4ed018a02b825d0eb823424693d1de.tar.gz emacs-a0451a715e4ed018a02b825d0eb823424693d1de.tar.bz2 emacs-a0451a715e4ed018a02b825d0eb823424693d1de.zip |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 523-544)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 168-171)
- Update from CVS
- Merge from emacs--devo--0
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-150
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) struct image *img; Lisp_Object image; GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0; + GtkToolItem *ti = NULL; + GtkWidget *wvbox; + GList *chlist; if (iter) iter = g_list_next (iter); @@ -3723,22 +3726,40 @@ update_frame_tool_bar (f) if (wicon) gtk_widget_hide (wicon); else + /* Insert an empty (non-image) button */ gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), gtk_tool_button_new (NULL, ""), i); continue; } - if (! wicon) + if (wicon) { - GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL); - GtkToolItem *ti = gtk_tool_button_new (w, ""); + /* The child of the tool bar is a button. Inside that button + is a vbox. Inside that vbox is the GtkImage. */ + wvbox = gtk_bin_get_child (GTK_BIN (wicon)); + chlist = gtk_container_get_children (GTK_CONTAINER (wvbox)); + if (chlist == NULL) + /* In this case, we inserted an empty button (above) with no image */ + ti = GTK_TOOL_ITEM (wicon); + } + if (! wicon || ti != NULL) + { + GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL); gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin); - gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), - ti, - i); + + if (ti == NULL) + { + ti = gtk_tool_button_new (w, ""); + + gtk_toolbar_insert (GTK_TOOLBAR (x->toolbar_widget), ti, i); + } + else + gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (ti), w); + + /* The EMACS_INT cast avoids a warning. */ g_signal_connect (GTK_WIDGET (ti), "clicked", GTK_SIGNAL_FUNC (xg_tool_bar_callback), |