changeset 94897:f23487dcd0a8

(tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA field in menu-item list.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 13 May 2008 17:52:31 +0000
parents 3c3a05682534
children d559b7ab8765
files lisp/tool-bar.el
diffstat 1 files changed, 19 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tool-bar.el	Tue May 13 16:41:32 2008 +0000
+++ b/lisp/tool-bar.el	Tue May 13 17:52:31 2008 +0000
@@ -93,20 +93,26 @@
 Its main job is to figure out which images to use based on the display's
 color capability and based on the available image libraries."
   (mapcar (lambda (bind)
-            (let (image-exp)
+            (let (image-exp plist)
               (when (and (eq (car-safe (cdr-safe bind)) 'menu-item)
-                         (setq image-exp (plist-get bind :image))
-                         (consp image-exp)
-                         (not (eq (car image-exp) 'image))
-                         (fboundp (car image-exp)))
-                (if (not (display-images-p))
-                    (setq bind nil)
-                  (let ((image (eval image-exp)))
-                    (unless (image-mask-p image)
-                      (setq image (append image '(:mask heuristic))))
-                    (setq bind (copy-sequence bind))
-                    (plist-put bind :image image))))
-              bind))
+			 ;; For the format of menu-items, see node
+			 ;; `Extended Menu Items' in the Elisp manual.
+			 (setq plist (nthcdr (if (consp (nth 4 bind)) 5 4)
+					     bind))
+			 (setq image-exp (plist-get plist :image))
+			 (consp image-exp)
+			 (not (eq (car image-exp) 'image))
+			 (fboundp (car image-exp)))
+		(if (not (display-images-p))
+		    (setq bind nil)
+		  (let ((image (eval image-exp)))
+		    (unless (image-mask-p image)
+		      (setq image (append image '(:mask heuristic))))
+		    (setq bind (copy-sequence bind)
+			  plist (nthcdr (if (consp (nth 4 bind)) 5 4)
+					bind))
+		    (plist-put plist :image image))))
+	      bind))
 	  tool-bar-map))
 
 (defconst tool-bar-find-image-cache (make-hash-table :weakness t :test 'equal))