summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-05-04 09:34:56 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-05-04 09:35:05 +0200
commitd2913901dcfaec60ce6a199a1252003e818a914d (patch)
tree3e49df6db8f38ae4088e7b7fb5fb02f07c0eeff3
parent4c9a7010bc553abb07ccc3c998faff9cf4472ed1 (diff)
downloademacs-d2913901dcfaec60ce6a199a1252003e818a914d.tar.gz
Flush the tool bar cache on all terminals when adding new entries
* lisp/tool-bar.el (tool-bar--flush-cache): Flush the cache for the current tool bar on all terminals.
-rw-r--r--lisp/tool-bar.el10
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el
index b3915c267cc..82b458e0107 100644
--- a/lisp/tool-bar.el
+++ b/lisp/tool-bar.el
@@ -95,7 +95,15 @@ functions.")
(cons (frame-terminal) (sxhash-eq tool-bar-map)))
(defun tool-bar--flush-cache ()
- (setf (gethash (tool-bar--cache-key) tool-bar-keymap-cache) nil))
+ "Remove all cached entries that refer to the current `tool-bar-map'."
+ (let ((id (sxhash-eq tool-bar-map))
+ (entries nil))
+ (maphash (lambda (k _)
+ (when (equal (cdr k) id)
+ (push k entries)))
+ tool-bar-keymap-cache)
+ (dolist (k entries)
+ (remhash k tool-bar-keymap-cache))))
(defun tool-bar-make-keymap (&optional _ignore)
"Generate an actual keymap from `tool-bar-map'.