emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/gtkutil.c,v


From: Jan Djärv
Subject: [Emacs-diffs] Changes to emacs/src/gtkutil.c,v
Date: Sun, 03 Dec 2006 11:44:34 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Jan Djärv <jhd>        06/12/03 11:44:33

Index: gtkutil.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/gtkutil.c,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -b -r1.98 -r1.99
--- gtkutil.c   4 Nov 2006 03:08:35 -0000       1.98
+++ gtkutil.c   3 Dec 2006 11:44:33 -0000       1.99
@@ -3684,6 +3684,9 @@
       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 @@
           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),




reply via email to

[Prev in Thread] Current Thread [Next in Thread]