From d2913901dcfaec60ce6a199a1252003e818a914d Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Wed, 4 May 2022 09:34:56 +0200 Subject: [PATCH] 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. --- lisp/tool-bar.el | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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'. -- 2.39.5