fixed repeated hotkeys canceling themselves - fixes #5406, fixes #4566

上级 95152456
......@@ -130,9 +130,7 @@ export class HotkeysService {
const keyName = getKeyName(eventData)
if (eventName === 'keydown') {
this.addPressedKey(keyName, eventData)
if (!nativeEvent.repeat) {
this.recognitionPhase = true
}
this.recognitionPhase = true
this.updateModifiers(eventData)
}
if (eventName === 'keyup') {
......@@ -158,8 +156,10 @@ export class HotkeysService {
const matched = this.matchActiveHotkey()
this.zone.run(() => {
if (matched && this.recognitionPhase) {
this.emitHotkeyOn(matched)
if (matched) {
if (this.recognitionPhase) {
this.emitHotkeyOn(matched)
}
} else if (this.pressedHotkey) {
this.emitHotkeyOff(this.pressedHotkey)
}
......@@ -288,10 +288,9 @@ export class HotkeysService {
private emitHotkeyOn (hotkey: string) {
if (this.pressedHotkey) {
if (this.pressedHotkey === hotkey) {
return
if (this.pressedHotkey !== hotkey) {
this.emitHotkeyOff(this.pressedHotkey)
}
this.emitHotkeyOff(this.pressedHotkey)
}
if (document.querySelectorAll('input:focus').length === 0) {
console.debug('Matched hotkey', hotkey)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册