From 01a717f1438852b432bc7f510df7cae6a1c8fe93 Mon Sep 17 00:00:00 2001 From: Nadav Tasher Date: Mon, 30 Dec 2024 21:03:18 +0200 Subject: [PATCH] Generic fix for keyboard shortcuts which fixes "SPACE" shortcut and more bugs --- client/lib/keyboard.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/client/lib/keyboard.js b/client/lib/keyboard.js index 3f262b82c..a7e0ada76 100644 --- a/client/lib/keyboard.js +++ b/client/lib/keyboard.js @@ -14,24 +14,33 @@ window.addEventListener('keydown', (e) => { Mousetrap.trigger(String.fromCharCode(e.which).toLowerCase()); }); -// Store the original stopCallback in a global -const originalStopCallback = Mousetrap.stopCallback; - // Overwrite the stopCallback to allow for more keyboard shortcut customizations -Mousetrap.stopCallback = (e, element) => { +Mousetrap.stopCallback = (event, element) => { // Are shortcuts enabled for the user? if (!ReactiveCache.getCurrentUser().isKeyboardShortcuts()) return true; // Always handle escape - if (e.keyCode === 27) + if (event.keyCode === 27) return false; // Make sure there are no selected characters if (window.getSelection().type === "Range") return true; - return originalStopCallback(e, element); + // Decide what the current element is + const currentElement = event.target || document.activeElement; + + // If the current element is editable, we don't want to trigger an event + if (currentElement.isContentEditable) + return true; + + // Make sure we are not in an input element + if (currentElement instanceof HTMLInputElement || currentElement instanceof HTMLSelectElement || currentElement instanceof HTMLTextAreaElement) + return true; + + // We can trigger events! + return false; } function getHoveredCardId() {