Stop buffering keys after 5s in the event clInput is never focused

This commit is contained in:
petoncle 2023-10-30 16:54:59 +01:00
parent 7f6d8603b2
commit 6c0d4d7973
2 changed files with 8 additions and 1 deletions

View file

@ -185,10 +185,10 @@ export function focus() {
clInputValueChanged()
}
}
logger.debug("commandline_frame clInput focus()")
commandline_state.clInput.focus()
commandline_state.clInput.removeEventListener("blur", noblur)
commandline_state.clInput.addEventListener("blur", noblur)
logger.debug("commandline_frame clInput focus(), activeElement is clInput: " + (window.document.activeElement === commandline_state.clInput))
Messaging.messageOwnTab("buffered_page_keys").then(consumeBufferedPageKeys)
}

View file

@ -104,6 +104,7 @@ export const canceller = new KeyCanceller()
let mustBufferPageKeysForClInput = false
let bufferedPageKeys: string[] = []
let stopBufferingPageKeysTimeoutId : number
Messaging.addListener("buffered_page_keys", (message, sender, sendResponse) => {
logger.debug("buffered_page_keys request received, responding with", bufferedPageKeys)
sendResponse(Promise.resolve(bufferedPageKeys))
@ -111,6 +112,7 @@ Messaging.addListener("buffered_page_keys", (message, sender, sendResponse) => {
// until it is refocused.
mustBufferPageKeysForClInput = false
bufferedPageKeys = []
clearTimeout(stopBufferingPageKeysTimeoutId);
})
/** Accepts keyevents, resolves them to maps, maps to exstrs, executes exstrs */
@ -207,6 +209,11 @@ function* ParserController() {
logger.debug("Starting buffering of page keys")
mustBufferPageKeysForClInput = true
bufferedPageKeys = []
// Stop buffering keys after 5s if something goes wrong and clInput never gets focused.
stopBufferingPageKeysTimeoutId = setTimeout(() => {
logger.debug("Aborting buffering of page keys since clInput still has not been focused")
mustBufferPageKeysForClInput = false
}, 5000)
}
break
} else {