From 622c11c6f314355b0e742fcbcbcc8ae51661bca0 Mon Sep 17 00:00:00 2001 From: Jared Finder Date: Fri, 26 Jan 2024 10:08:30 -0800 Subject: [PATCH 2/3] Add user option to only display default tool bar This works well with `window-tool-bar-mode', to be added in upcoming commit. Then the default tool bar is displayed frame-wide and mode-specific tool bars are displayed in the window that mode is active in. * lisp/tool-bar.el (tool-bar-always-show-default): New user option. (tool-bar--cache-key, tool-bar-make-keymap-1): Return default tool bar when option is set. --- lisp/tool-bar.el | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el index 96b61c7b229..52d60b32412 100644 --- a/lisp/tool-bar.el +++ b/lisp/tool-bar.el @@ -100,7 +100,9 @@ secondary-tool-bar-map (defconst tool-bar-keymap-cache (make-hash-table :test #'equal)) (defsubst tool-bar--cache-key () - (cons (frame-terminal) (sxhash-eq tool-bar-map))) + (cons (frame-terminal) + (sxhash-eq (if tool-bar-always-show-default (default-value 'tool-bar-map) + tool-bar-map)))) (defsubst tool-bar--secondary-cache-key () (cons (frame-terminal) (sxhash-eq secondary-tool-bar-map))) @@ -191,7 +193,9 @@ tool-bar-make-keymap-1 bind)) (plist-put plist :image image))) bind)) - (or map tool-bar-map))) + (or map + (if tool-bar-always-show-default (default-value 'tool-bar-map) + tool-bar-map)))) ;;;###autoload (defun tool-bar-add-item (icon def key &rest props) @@ -377,6 +381,15 @@ tool-bar-setup (modify-all-frames-parameters (list (cons 'tool-bar-position val)))))) +(defcustom tool-bar-always-show-default nil + "If non-nil, `tool-bar-mode' only shows the default tool bar. +This works well when also using `global-window-tool-bar-mode' to +display buffer-specific tool bars." + :type 'boolean + :group 'frames + :group 'mouse + :version "30.1") + ;; Modifier bar mode. -- 2.39.2