From 12db1cffd614a591d94b275c9b4a8afefaa945b8 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 8 Oct 2022 22:33:14 +0000 Subject: [PATCH] KeyShortcutHandler allow force register item --- src/kiss_tools/KeyShortcutHandler.kiss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/kiss_tools/KeyShortcutHandler.kiss b/src/kiss_tools/KeyShortcutHandler.kiss index 45f9e07..1a2712e 100644 --- a/src/kiss_tools/KeyShortcutHandler.kiss +++ b/src/kiss_tools/KeyShortcutHandler.kiss @@ -71,11 +71,11 @@ (otherwise shortcuts))) -(method :Void registerShortcut [keys description item &opt :PrefixMap prefixMap] +(method :Void registerShortcut [keys description item &opt :Bool force :PrefixMap prefixMap] (unless prefixMap (set prefixMap rootMap)) (let [firstKey (keys.shift)] (cond - ((or (prefixMap.exists firstKey) (= firstKey cancelKey)) + ((and !force (or (prefixMap.exists firstKey) (= firstKey cancelKey))) (let [existingKey (if (= firstKey cancelKey) (Cancel cancelKey) (dictGet prefixMap firstKey)) conflictMessage "Keyboard shortcut for $description conflicts with $existingKey"] (if keys @@ -94,12 +94,12 @@ (if keys (let [innerPrefixMap (new Map)] (dictSet prefixMap firstKey (Prefix innerPrefixMap)) - (registerShortcut keys description item innerPrefixMap)) + (registerShortcut keys description item force innerPrefixMap)) (dictSet prefixMap firstKey (Final item))))))) -(method :Void registerItem [description :T item] +(method :Void registerItem [description :T item &opt :Bool force] (whenLet [keyboardShortcut (extractKeyboardShortcuts description)] - (registerShortcut keyboardShortcut description item))) + (registerShortcut keyboardShortcut description item force))) (method :Map prefixMapToStrings [:PrefixMap map] (for =>key mapping map