diff options
Diffstat (limited to 'ext/js/display')
-rw-r--r-- | ext/js/display/search-display-controller.js | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/ext/js/display/search-display-controller.js b/ext/js/display/search-display-controller.js index c8025d62..bf75e928 100644 --- a/ext/js/display/search-display-controller.js +++ b/ext/js/display/search-display-controller.js @@ -109,12 +109,15 @@ class SearchDisplayController { } _onKeyDown(e) { + const {activeElement} = document; if ( - document.activeElement !== this._queryInput && + activeElement !== this._queryInput && + !this._isElementInput(activeElement) && !e.ctrlKey && !e.metaKey && !e.altKey && - e.key.length === 1 + e.key.length === 1 && + e.key !== ' ' ) { this._queryInput.focus({preventScroll: true}); } @@ -425,4 +428,17 @@ class SearchDisplayController { document.documentElement.dataset.searchMode = (mode !== null ? mode : ''); this._updateClipboardMonitorEnabled(); } + + _isElementInput(element) { + if (element === null) { return false; } + switch (element.tagName.toLowerCase()) { + case 'input': + case 'textarea': + case 'button': + case 'select': + return true; + } + if (element.contentEditable) { return true; } + return false; + } } |