fix: fix question mark hotkey (#887)

* fix: fix question mark hotkey

* fix tests
This commit is contained in:
Nolan Lawson 2019-01-13 14:02:01 -08:00 committed by GitHub
parent 29a2892dd0
commit 6d1bb64bbb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 12 deletions

View file

@ -166,16 +166,14 @@ function unmapKeys (keyMap, keys, component) {
}
function acceptShortcutEvent (event) {
if (event.metaKey || event.ctrlKey || event.shiftKey) {
return
}
let target = event.target
if (target && (target.isContentEditable ||
target.tagName === 'INPUT' ||
target.tagName === 'TEXTAREA' ||
target.tagName === 'SELECT')) {
return false
}
return true
let { target } = event
return !(
event.metaKey ||
event.ctrlKey ||
(event.shiftKey && event.key !== '?') || // '?' is a special case - it is allowed
(target && (
target.isContentEditable ||
['INPUT', 'TEXTAREA', 'SELECT'].includes(target.tagName)
))
)
}

View file

@ -116,6 +116,17 @@ describe('test-shortcuts.js', function () {
assert.ok(component.notPressed())
})
it('does not skip events for ?', function () {
let component = new Component()
addToShortcutScope('global', '?', component)
let qEvent = new KeyDownEvent('?')
qEvent.shiftKey = true
eventListener(qEvent)
assert.ok(component.pressed())
})
it('skips events for editable elements', function () {
let component = new Component()