]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix thinko in recent tool bar caching logic
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 3 May 2022 17:20:52 +0000 (19:20 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 3 May 2022 17:20:52 +0000 (19:20 +0200)
* lisp/tool-bar.el (tool-bar--cache-key): New function.
(tool-bar--flush-cache, tool-bar-make-keymap): Use it.

lisp/tool-bar.el

index 490fd0d3325cf0936318a7b22383594facfc3d23..b3915c267cca2cb6bdfaa8e0cfe50cc010e86ef0 100644 (file)
@@ -89,17 +89,20 @@ functions.")
 
 (declare-function image-mask-p "image.c" (spec &optional frame))
 
-(defconst tool-bar-keymap-cache (make-hash-table))
+(defconst tool-bar-keymap-cache (make-hash-table :test #'equal))
+
+(defun tool-bar--cache-key ()
+  (cons (frame-terminal) (sxhash-eq tool-bar-map)))
 
 (defun tool-bar--flush-cache ()
-  (setf (gethash (frame-terminal) tool-bar-keymap-cache) nil))
+  (setf (gethash (tool-bar--cache-key) tool-bar-keymap-cache) nil))
 
 (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."
-  (or (gethash (frame-terminal) tool-bar-keymap-cache)
-      (setf (gethash (frame-terminal) tool-bar-keymap-cache)
+  (or (gethash (tool-bar--cache-key) tool-bar-keymap-cache)
+      (setf (gethash (tool-bar--cache-key) tool-bar-keymap-cache)
             (tool-bar-make-keymap-1))))
 
 (defun tool-bar-make-keymap-1 ()