From a716a52cab143ae2e02b54c2f075a8731de16193 Mon Sep 17 00:00:00 2001 From: siikamiika Date: Sat, 26 Oct 2019 01:26:56 +0300 Subject: [PATCH] make non-hotkey keys focus input on search page The issue was that scanning on search page introduced a way to lose focus of the query input, and the new feature that the search page hotkey focuses an existing search page instead of opening a new one made it more obvious. Now every key that isn't a hotkey focuses the query input, and typing text into the box scrolls it into view in case it wasn't there when searching. There is an accessibility issue that this can cause, because now tab also focuses the query input before it focuses the next element. I didn't implement a workaround for that because it would have been more complicated than this simple fix. Fixes #263 --- ext/bg/js/search.js | 7 +++++++ ext/mixed/js/display.js | 2 ++ 2 files changed, 9 insertions(+) diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 431478c9..5c0bffed 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -79,6 +79,7 @@ class DisplaySearch extends Display { onSearchInput() { this.updateSearchButton(); + this.query.scrollIntoView(); } onSearch(e) { @@ -94,6 +95,12 @@ class DisplaySearch extends Display { this.onSearchQueryUpdated(query, true); } + onKeyDown(e) { + if (!super.onKeyDown(e)) { + this.query.focus({preventScroll: true}); + } + } + async onSearchQueryUpdated(query, animate) { try { const valid = (query.length > 0); diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index b40228b0..bdc5e962 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -157,8 +157,10 @@ class Display { const handler = handlers[key]; if (handler(this, e)) { e.preventDefault(); + return true; } } + return false; } onWheel(e) {