aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/search.js29
1 files changed, 28 insertions, 1 deletions
diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js
index 5c0bffed..f0bbf203 100644
--- a/ext/bg/js/search.js
+++ b/ext/bg/js/search.js
@@ -96,7 +96,34 @@ class DisplaySearch extends Display {
}
onKeyDown(e) {
- if (!super.onKeyDown(e)) {
+ const key = Display.getKeyFromEvent(e);
+
+ let activeModifierMap = {
+ 'Control': e.ctrlKey,
+ 'Meta': e.metaKey
+ };
+ // true if no known modifier is pressed
+ activeModifierMap[undefined] = !Object.values(activeModifierMap).includes(true);
+
+ const ignoreKeys = {
+ undefined: ['Tab'],
+ 'Control': ['C', 'A', 'V'],
+ 'Meta': ['C', 'A', 'V'],
+ 'OS': [],
+ 'Alt': [],
+ 'Shift': []
+ }
+
+ let preventFocus = false;
+ for (const [modifier, keys] of Object.entries(ignoreKeys)) {
+ const modifierActive = activeModifierMap[modifier];
+ if (key === modifier || (modifierActive && keys.includes(key))) {
+ preventFocus = true;
+ break;
+ }
+ }
+
+ if (!super.onKeyDown(e) && !preventFocus) {
this.query.focus({preventScroll: true});
}
}