# HG changeset patch # User Chong Yidong # Date 1227756577 0 # Node ID 1b6dc3613e69b871c488d8eabb8ebcd119f3e498 # Parent 11d986fc0df39c2851374aec5b5fc4fe53910243 (tool-bar-find-image-cache): Var deleted. (tool-bar-find-image): Function deleted. (tool-bar-local-item, tool-bar-local-item-from-menu): Use find-image instead of tool-bar-find-image. (tool-bar-keymap-cache): New hash table. (tool-bar-make-keymap): Use it. (tool-bar-make-keymap-1): Move body of tool-bar-make-keymap here. diff -r 11d986fc0df3 -r 1b6dc3613e69 lisp/tool-bar.el --- a/lisp/tool-bar.el Thu Nov 27 03:27:54 2008 +0000 +++ b/lisp/tool-bar.el Thu Nov 27 03:29:37 2008 +0000 @@ -92,10 +92,18 @@ (declare-function image-mask-p "image.c" (spec &optional frame)) +(defconst tool-bar-keymap-cache (make-hash-table :weakness t :test 'equal)) + (defun tool-bar-make-keymap (&optional ignore) "Generate an actual keymap from `tool-bar-map'. 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." + (let ((key (cons (frame-terminal) tool-bar-map))) + (or (gethash key tool-bar-keymap-cache) + (puthash key (tool-bar-make-keymap-1) tool-bar-keymap-cache)))) + +(defun tool-bar-make-keymap-1 () + "Generate an actual keymap from `tool-bar-map', without caching." (mapcar (lambda (bind) (let (image-exp plist) (when (and (eq (car-safe (cdr-safe bind)) 'menu-item) @@ -119,13 +127,6 @@ bind)) tool-bar-map)) -(defconst tool-bar-find-image-cache (make-hash-table :weakness t :test 'equal)) - -(defun tool-bar-find-image (specs) - "Like `find-image' but with caching." - (or (gethash specs tool-bar-find-image-cache) - (puthash specs (find-image specs) tool-bar-find-image-cache))) - ;;;###autoload (defun tool-bar-add-item (icon def key &rest props) "Add an item to the tool bar. @@ -166,7 +167,7 @@ (concat icon ".pbm")) colors)) (xbm-spec (append (list :type 'xbm :file (concat icon ".xbm")) colors)) - (image-exp `(tool-bar-find-image + (image-exp `(find-image (cond ((not (display-color-p)) ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec)) ((< (display-color-cells) 256) @@ -218,7 +219,7 @@ (concat icon ".pbm")) colors)) (xbm-spec (append (list :type 'xbm :file (concat icon ".xbm")) colors)) - (image-exp `(tool-bar-find-image + (image-exp `(find-image (cond ((not (display-color-p)) ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec)) ((< (display-color-cells) 256)