forked from cybrespace/pinafore
fix: fix question mark hotkey (#887)
* fix: fix question mark hotkey * fix tests
This commit is contained in:
parent
29a2892dd0
commit
6d1bb64bbb
|
@ -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)
|
||||
))
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
Loading…
Reference in New Issue