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; +    }  } |