From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Leon Newsgroups: gmane.emacs.devel Subject: Re: Icon update Date: Wed, 29 Mar 2006 20:03:39 +0100 Message-ID: References: <2014.1143413876@olgas.newt.com> <2055.1143413986@olgas.newt.com> <858xqvek7c.fsf@lola.goethe.zz> <4428D8BB.8050701@swipnet.se> <442A5D49.1000302@swipnet.se> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1143660124 4464 80.91.229.2 (29 Mar 2006 19:22:04 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 29 Mar 2006 19:22:04 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Mar 29 21:22:00 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1FOgEb-0004vb-Or for ged-emacs-devel@m.gmane.org; Wed, 29 Mar 2006 21:21:41 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FOgEa-0005k1-Gv for ged-emacs-devel@m.gmane.org; Wed, 29 Mar 2006 14:21:36 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FOgEL-0005hU-8O for emacs-devel@gnu.org; Wed, 29 Mar 2006 14:21:21 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FOgEK-0005fQ-5H for emacs-devel@gnu.org; Wed, 29 Mar 2006 14:21:20 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FOgEJ-0005ew-Dm for emacs-devel@gnu.org; Wed, 29 Mar 2006 14:21:19 -0500 Original-Received: from [80.91.229.2] (helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA:32) (Exim 4.52) id 1FOfyZ-00007o-7x for emacs-devel@gnu.org; Wed, 29 Mar 2006 14:05:03 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1FOfvz-00012V-RK for emacs-devel@gnu.org; Wed, 29 Mar 2006 21:02:24 +0200 Original-Received: from sl392.st-edmunds.cam.ac.uk ([131.111.223.202]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 29 Mar 2006 21:02:23 +0200 Original-Received: from sdl.web by sl392.st-edmunds.cam.ac.uk with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 29 Mar 2006 21:02:23 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-To: emacs-devel@gnu.org Original-Lines: 547 Original-X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: sl392.st-edmunds.cam.ac.uk Face: iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAwFBMVEUAAgAFCAQHCgYQEg8W GBUZGxgeHx0jJCInKCYsLSsxMzA2ODU9PjxERUNHSUZUVVNYWlddXlxgYV9hY2BmaGVqbGlucG1y dHF1d3R4end6fHl/gX6Bg4CGiIWMjouRk5CWmJWbnZqeoJ2ho6CjpaKnqaapq6isrquytLG3uba9 v7zBw8DGyMXIysfO0M3R1NDV19PX2dbb3dre4Nzg4t/j5eHm6OXq7Ont7+vu8O3y9PH2+fX5+/j7 /fr8//v+//yWD+MvAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YC GgMgA0McekgAAAE/SURBVDjLpZOJboJAFEUnxNrWSFun2rIURIlLqUEoFcs4N+///6rgOhjcygmQ TIDDffMejBSwopth6sLV6wkQz2smAGoJUteRRIljFfT/IbDFQ0iJbukm5x/+7YKfz1jL4AsY8OIr asHkpSwArA5yFu/E04uCgLdYQ6oCkGwGC0mwp9CTi5+fGYPnsiCX3ktHkGhm1B5dLgDoHgTp2Jvn U9AeTgm+Tui97h8UXyV+93kJfCdYmU9BymdAWpQuss25ZahpjB0OW8mwSwDeFsDAx3qMiosyT0BW QlYIAuYvY68jTswhyih3tgK8Mdcdhif7tlKQ6t8KfrdJ0Hk8VquMGiXcigR2q1jJSXW3luORSqIm 2Aq+mxFR1J3RFTtwCBqZZkszzEkuQNgzrX52xfCT0p2QrxkUApzbgzOTuHntD1OuGlUu3YXdAAAA AElFTkSuQmCC User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.0 (gnu/linux) Cancel-Lock: sha1:9h6+Fy7PaQgY4xoacKSUFja3PfI= X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:52191 Archived-At: Can someone show me how to use this patch? I did a patch -p4 < emacs-stokc.diff in emacs CVS dir, and it asked me for `file to patch'. Thank you. "Jan D." writes: > Leon wrote: >> "Jan D." writes: >> >>> David Kastrup wrote: >>>> Bill Wohler writes: >>>> >>>>> By the way, if anyone has GTK experience, the Emacs code should be using >>>>> the GTK libraries to render the icons and only using our built-in icons >>>>> as a fall-back. That way, Emacs icons will pick up theme changes. >>> I have a patch that does just that, but I decided to wait with it >>> until after the release. It will only work for Emacs compiled with >>> GTK, but I guess that is obvious. >>> >>> Jan D. >> Sounds interesting. May I have a copy of the patch? Thanks. > > Attached. But some icons don't have stock items, so the effect may be > strange for some themes. > > Jan D. > Index: lisp/info.el > =================================================================== > RCS file: /cvsroot/emacs/emacs/lisp/info.el,v > retrieving revision 1.481 > diff -u -c -r1.481 info.el > *** lisp/info.el 11 Mar 2006 22:35:18 -0000 1.481 > --- lisp/info.el 29 Mar 2006 10:05:16 -0000 > *************** > *** 3209,3224 **** > (defvar info-tool-bar-map > (if (display-graphic-p) > (let ((map (make-sparse-keymap))) > ! (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map) > (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map) > (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map) > (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map) > map))) > > (defvar Info-menu-last-node nil) > --- 3209,3231 ---- > (defvar info-tool-bar-map > (if (display-graphic-p) > (let ((map (make-sparse-keymap))) > ! (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map > ! :stock "gtk-close") > ! (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map > ! :stock "gtk-go-back") > ! (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map > ! :stock "gtk-go-forward") > (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map) > (tool-bar-local-item-from-menu 'Info-next "next-node" map Info-mode-map) > (tool-bar-local-item-from-menu 'Info-up "up-node" map Info-mode-map) > ! (tool-bar-local-item-from-menu 'Info-top-node "home" map Info-mode-map > ! :stock "gtk-home") > ! (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map > ! :stock "gtk-jump-to") > ! (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map > ! :stock "gtk-index") > ! (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map > ! :stock "gtk-find") > map))) > > (defvar Info-menu-last-node nil) > Index: lisp/tool-bar.el > =================================================================== > RCS file: /cvsroot/emacs/emacs/lisp/tool-bar.el,v > retrieving revision 1.5 > diff -u -c -r1.5 tool-bar.el > *** lisp/tool-bar.el 6 Feb 2006 14:33:35 -0000 1.5 > --- lisp/tool-bar.el 29 Mar 2006 10:05:16 -0000 > *************** > *** 232,279 **** > ;; People say it's bad to have EXIT on the tool bar, since users > ;; might inadvertently click that button. > ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit") > ! (tool-bar-add-item-from-menu 'find-file "new") > ! (tool-bar-add-item-from-menu 'menu-find-file-existing "open") > ! (tool-bar-add-item-from-menu 'dired "diropen") > ! (tool-bar-add-item-from-menu 'kill-this-buffer "close") > (tool-bar-add-item-from-menu 'save-buffer "save" nil > :visible '(or buffer-file-name > (not (eq 'special > (get major-mode > 'mode-class))))) > (tool-bar-add-item-from-menu 'write-file "saveas" nil > :visible '(or buffer-file-name > (not (eq 'special > (get major-mode > 'mode-class))))) > (tool-bar-add-item-from-menu 'undo "undo" nil > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut]) > "cut" nil > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy]) > ! "copy") > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste]) > "paste" nil > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > ! (tool-bar-add-item-from-menu 'nonincremental-search-forward "search") > ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell") > > ;; There's no icon appropriate for News and we need a command rather > ;; than a lambda for Read Mail. > ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose") > > ! (tool-bar-add-item-from-menu 'print-buffer "print") > (tool-bar-add-item "preferences" 'customize 'customize > :help "Edit preferences (customize)") > > (tool-bar-add-item "help" (lambda () > (interactive) > (popup-menu menu-bar-help-menu)) > 'help > :help "Pop up the Help menu") > ) > > --- 232,291 ---- > ;; People say it's bad to have EXIT on the tool bar, since users > ;; might inadvertently click that button. > ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit") > ! (tool-bar-add-item-from-menu 'find-file "new" nil :stock "gtk-new") > ! (tool-bar-add-item-from-menu 'menu-find-file-existing "open" > ! nil :stock "gtk-open") > ! (tool-bar-add-item-from-menu 'dired "diropen" > ! nil :stock "gtk-directory") > ! (tool-bar-add-item-from-menu 'kill-this-buffer "close" > ! nil :stock "gtk-close") > (tool-bar-add-item-from-menu 'save-buffer "save" nil > + :stock "gtk-save" > :visible '(or buffer-file-name > (not (eq 'special > (get major-mode > 'mode-class))))) > (tool-bar-add-item-from-menu 'write-file "saveas" nil > + :stock "gtk-save-as" > :visible '(or buffer-file-name > (not (eq 'special > (get major-mode > 'mode-class))))) > (tool-bar-add-item-from-menu 'undo "undo" nil > + :stock "gtk-undo" > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut]) > "cut" nil > + :stock "gtk-cut" > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy]) > ! "copy" nil :stock "gtk-copy") > (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste]) > "paste" nil > + :stock "gtk-paste" > :visible '(not (eq 'special (get major-mode > 'mode-class)))) > ! (tool-bar-add-item-from-menu 'nonincremental-search-forward "search" > ! nil :stock "gtk-find") > ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell") > > ;; There's no icon appropriate for News and we need a command rather > ;; than a lambda for Read Mail. > ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose") > > ! (tool-bar-add-item-from-menu 'print-buffer "print" > ! nil :stock "gtk-print") > (tool-bar-add-item "preferences" 'customize 'customize > + :stock "gtk-preferences" > :help "Edit preferences (customize)") > > (tool-bar-add-item "help" (lambda () > (interactive) > (popup-menu menu-bar-help-menu)) > 'help > + :stock "gtk-help" > :help "Pop up the Help menu") > ) > > Index: src/dispextern.h > =================================================================== > RCS file: /cvsroot/emacs/emacs/src/dispextern.h,v > retrieving revision 1.215 > diff -u -c -r1.215 dispextern.h > *** src/dispextern.h 15 Mar 2006 07:55:36 -0000 1.215 > --- src/dispextern.h 29 Mar 2006 10:05:17 -0000 > *************** > *** 2539,2544 **** > --- 2539,2547 ---- > /* Help string. */ > TOOL_BAR_ITEM_HELP, > > + /* Stock image. */ > + TOOL_BAR_ITEM_STOCK_IMAGE, > + > /* Sentinel = number of slots in tool_bar_items occupied by one > tool-bar item. */ > TOOL_BAR_ITEM_NSLOTS > Index: src/gtkutil.c > =================================================================== > RCS file: /cvsroot/emacs/emacs/src/gtkutil.c,v > retrieving revision 1.84 > diff -u -c -r1.84 gtkutil.c > *** src/gtkutil.c 24 Feb 2006 15:36:39 -0000 1.84 > --- src/gtkutil.c 29 Mar 2006 10:05:17 -0000 > *************** > *** 3243,3248 **** > --- 3243,3253 ---- > #define XG_TOOL_BAR_LAST_MODIFIER "emacs-tool-bar-modifier" > > > + /* The key for the data we put in the GtkImage widgets. The data is > + the stock name used by Emacs. We use this to see if we need to update > + the GtkImage with a new image. */ > + #define XG_TOOL_BAR_STOCK_NAME "emacs-tool-bar-stock-name" > + > /* Callback function invoked when a tool bar item is pressed. > W is the button widget in the tool bar that got pressed, > CLIENT_DATA is an integer that is the index of the button in the > *************** > *** 3525,3530 **** > --- 3530,3536 ---- > GList *iter; > struct x_output *x = f->output_data.x; > int hmargin, vmargin; > + GtkToolbar *wtoolbar; > > if (! FRAME_GTK_WIDGET (f)) > return; > *************** > *** 3558,3566 **** > if (! x->toolbar_widget) > xg_create_tool_bar (f); > > ! gtk_widget_size_request (x->toolbar_widget, &old_req); > ! > ! icon_list = gtk_container_get_children (GTK_CONTAINER (x->toolbar_widget)); > iter = icon_list; > > for (i = 0; i < f->n_tool_bar_items; ++i) > --- 3564,3573 ---- > if (! x->toolbar_widget) > xg_create_tool_bar (f); > > ! wtoolbar = GTK_TOOLBAR (x->toolbar_widget); > ! gtk_widget_size_request (GTK_WIDGET (wtoolbar), &old_req); > ! > ! icon_list = gtk_container_get_children (GTK_CONTAINER (wtoolbar)); > iter = icon_list; > > for (i = 0; i < f->n_tool_bar_items; ++i) > *************** > *** 3571,3622 **** > int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P)); > int idx; > int img_id; > ! struct image *img; > Lisp_Object image; > GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0; > > if (iter) iter = g_list_next (iter); > > ! /* If image is a vector, choose the image according to the > ! button state. */ > ! image = PROP (TOOL_BAR_ITEM_IMAGES); > ! if (VECTORP (image)) > ! { > ! if (enabled_p) > ! idx = (selected_p > ! ? TOOL_BAR_IMAGE_ENABLED_SELECTED > ! : TOOL_BAR_IMAGE_ENABLED_DESELECTED); > ! else > ! idx = (selected_p > ! ? TOOL_BAR_IMAGE_DISABLED_SELECTED > ! : TOOL_BAR_IMAGE_DISABLED_DESELECTED); > ! > ! xassert (ASIZE (image) >= idx); > ! image = AREF (image, idx); > ! } > ! else > ! idx = -1; > > ! /* Ignore invalid image specifications. */ > ! if (!valid_image_p (image)) > { > ! if (wicon) gtk_widget_hide (wicon); > ! continue; > } > > ! img_id = lookup_image (f, image); > ! img = IMAGE_FROM_ID (f, img_id); > ! prepare_image_for_display (f, img); > > - if (img->load_failed_p || img->pixmap == None) > - { > - if (wicon) gtk_widget_hide (wicon); > - continue; > } > > if (! wicon) > { > ! GtkWidget *w = xg_get_image_for_pixmap (f, img, x->widget, NULL); > GtkToolItem *ti = gtk_tool_button_new (w, ""); > > gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin); > --- 3578,3663 ---- > int selected_p = !NILP (PROP (TOOL_BAR_ITEM_SELECTED_P)); > int idx; > int img_id; > ! int icon_size = 0; > ! struct image *img = NULL; > Lisp_Object image; > + Lisp_Object stock; > GtkWidget *wicon = iter ? GTK_WIDGET (iter->data) : 0; > + GtkStockItem stock_item; > + char *stock_name = NULL; > > if (iter) iter = g_list_next (iter); > > ! stock = PROP (TOOL_BAR_ITEM_STOCK_IMAGE); > > ! if (! NILP (stock) && STRINGP (stock) > ! && gtk_stock_lookup (SSDATA (stock), &stock_item)) > { > ! stock_name = SSDATA (stock); > ! icon_size = gtk_toolbar_get_icon_size (wtoolbar); > } > + else > + { > + /* No stock image, or stock item not known. Try regular image. */ > > ! /* If image is a vector, choose the image according to the > ! button state. */ > ! image = PROP (TOOL_BAR_ITEM_IMAGES); > ! if (VECTORP (image)) > ! { > ! if (enabled_p) > ! idx = (selected_p > ! ? TOOL_BAR_IMAGE_ENABLED_SELECTED > ! : TOOL_BAR_IMAGE_ENABLED_DESELECTED); > ! else > ! idx = (selected_p > ! ? TOOL_BAR_IMAGE_DISABLED_SELECTED > ! : TOOL_BAR_IMAGE_DISABLED_DESELECTED); > ! > ! xassert (ASIZE (image) >= idx); > ! image = AREF (image, idx); > ! } > ! else > ! idx = -1; > ! > ! /* Ignore invalid image specifications. */ > ! if (!valid_image_p (image)) > ! { > ! if (wicon) gtk_widget_hide (wicon); > ! continue; > ! } > ! > ! img_id = lookup_image (f, image); > ! img = IMAGE_FROM_ID (f, img_id); > ! prepare_image_for_display (f, img); > ! > ! if (img->load_failed_p || img->pixmap == None) > ! { > ! if (wicon) gtk_widget_hide (wicon); > ! continue; > ! } > > } > > if (! wicon) > { > ! GtkWidget *w; > ! if (stock_name) > ! { > ! w = gtk_image_new_from_stock (stock_name, icon_size); > ! g_object_set_data_full (G_OBJECT (w), XG_TOOL_BAR_STOCK_NAME, > ! (gpointer) xstrdup (stock_name), > ! (GDestroyNotify) xfree); > ! } > ! else > ! { > ! w = xg_get_image_for_pixmap (f, img, x->widget, NULL); > ! /* Save the image so we can see if an update is needed when > ! this function is called again. */ > ! g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA, > ! (gpointer)img->pixmap); > ! } > ! > GtkToolItem *ti = gtk_tool_button_new (w, ""); > > gtk_misc_set_padding (GTK_MISC (w), hmargin, vmargin); > *************** > *** 3632,3641 **** > gtk_widget_show (GTK_WIDGET (ti)); > gtk_widget_show (GTK_WIDGET (w)); > > - /* Save the image so we can see if an update is needed when > - this function is called again. */ > - g_object_set_data (G_OBJECT (w), XG_TOOL_BAR_IMAGE_DATA, > - (gpointer)img->pixmap); > > g_object_set_data (G_OBJECT (ti), XG_FRAME_DATA, (gpointer)f); > > --- 3673,3678 ---- > *************** > *** 3684,3698 **** > GtkImage *wimage = GTK_IMAGE (chlist->data); > Pixmap old_img = (Pixmap)g_object_get_data (G_OBJECT (wimage), > XG_TOOL_BAR_IMAGE_DATA); > g_list_free (chlist); > > ! gtk_misc_set_padding (GTK_MISC (wimage), hmargin, vmargin); > > ! if (old_img != img->pixmap) > ! (void) xg_get_image_for_pixmap (f, img, x->widget, wimage); > ! > ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA, > ! (gpointer)img->pixmap); > > gtk_widget_set_sensitive (wicon, enabled_p); > gtk_widget_show (wicon); > --- 3721,3751 ---- > GtkImage *wimage = GTK_IMAGE (chlist->data); > Pixmap old_img = (Pixmap)g_object_get_data (G_OBJECT (wimage), > XG_TOOL_BAR_IMAGE_DATA); > + gpointer old_stock_name = g_object_get_data (G_OBJECT (wimage), > + XG_TOOL_BAR_STOCK_NAME); > g_list_free (chlist); > > ! if (stock_name && > ! (! old_stock_name || strcmp (old_stock_name, stock_name) != 0)) > ! { > ! gtk_image_set_from_stock (wimage, stock_name, icon_size); > ! g_object_set_data_full (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME, > ! (gpointer) xstrdup (stock_name), > ! (GDestroyNotify) xfree); > ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA, > ! NULL); > ! } > ! else if (img && old_img != img->pixmap) > ! { > ! (void) xg_get_image_for_pixmap (f, img, x->widget, wimage); > ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_IMAGE_DATA, > ! (gpointer)img->pixmap); > ! > ! g_object_set_data (G_OBJECT (wimage), XG_TOOL_BAR_STOCK_NAME, > ! NULL); > ! } > > ! gtk_misc_set_padding (GTK_MISC (wimage), hmargin, vmargin); > > gtk_widget_set_sensitive (wicon, enabled_p); > gtk_widget_show (wicon); > *************** > *** 3710,3716 **** > iter = g_list_next (iter); > } > > ! gtk_widget_size_request (x->toolbar_widget, &new_req); > if (old_req.height != new_req.height > && ! FRAME_X_OUTPUT (f)->toolbar_detached) > { > --- 3763,3769 ---- > iter = g_list_next (iter); > } > > ! gtk_widget_size_request (GTK_WIDGET (wtoolbar), &new_req); > if (old_req.height != new_req.height > && ! FRAME_X_OUTPUT (f)->toolbar_detached) > { > Index: src/keyboard.c > =================================================================== > RCS file: /cvsroot/emacs/emacs/src/keyboard.c,v > retrieving revision 1.851 > diff -u -c -r1.851 keyboard.c > *** src/keyboard.c 29 Mar 2006 08:00:23 -0000 1.851 > --- src/keyboard.c 29 Mar 2006 10:05:18 -0000 > *************** > *** 7573,7582 **** > > static int ntool_bar_items; > > ! /* The symbols `tool-bar', and `:image'. */ > > extern Lisp_Object Qtool_bar; > Lisp_Object QCimage; > > /* Function prototypes. */ > > --- 7573,7583 ---- > > static int ntool_bar_items; > > ! /* The symbols `tool-bar', `:image' and `:stock'. */ > > extern Lisp_Object Qtool_bar; > Lisp_Object QCimage; > + Lisp_Object Qstock; > > /* Function prototypes. */ > > *************** > *** 7862,7867 **** > --- 7863,7871 ---- > /* Value is either a single image specification or a vector > of 4 such specifications for the different button states. */ > PROP (TOOL_BAR_ITEM_IMAGES) = value; > + else if (EQ (key, Qstock)) > + /* ':stock STRING' */ > + PROP (TOOL_BAR_ITEM_STOCK_IMAGE) = value; > } > > /* If got a filter apply it on binding. */ > *************** > *** 10846,10851 **** > --- 10850,10858 ---- > staticpro (&Qhelp_echo); > Qhelp_echo = intern ("help-echo"); > > + staticpro (&Qstock); > + Qstock = intern (":stock"); > + > staticpro (&item_properties); > item_properties = Qnil; > > _______________________________________________ > Emacs-devel mailing list > Emacs-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-devel -- Leon