]> code.delx.au - gnu-emacs/commitdiff
(tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
authorChong Yidong <cyd@stupidchicken.com>
Tue, 13 May 2008 17:52:31 +0000 (17:52 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 13 May 2008 17:52:31 +0000 (17:52 +0000)
field in menu-item list.

lisp/tool-bar.el

index f0f2ff1f234f1ff1ba9692195aa176aac25b01b4..48ad887ddd19a4c1bd40d7d0647e0564a780ff0f 100644 (file)
@@ -93,20 +93,26 @@ Define this locally to override the global tool bar.")
 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))