[Editor] Clear the different timeouts when destroying

This commit is contained in:
Calixte Denizet 2023-09-27 22:10:32 +02:00
parent 00c8fbe7e0
commit 8417eee0c1
4 changed files with 47 additions and 10 deletions

View file

@ -543,6 +543,8 @@ class AnnotationEditorUIManager {
#filterFactory = null;
#focusMainContainerTimeoutId = null;
#idManager = new IdManager();
#isEnabled = false;
@ -735,6 +737,14 @@ class AnnotationEditorUIManager {
this.#selectedEditors.clear();
this.#commandManager.destroy();
this.#altTextManager.destroy();
if (this.#focusMainContainerTimeoutId) {
clearTimeout(this.#focusMainContainerTimeoutId);
this.#focusMainContainerTimeoutId = null;
}
if (this.#translationTimeoutId) {
clearTimeout(this.#translationTimeoutId);
this.#translationTimeoutId = null;
}
}
get hcmFilter() {
@ -1281,6 +1291,17 @@ class AnnotationEditorUIManager {
* @param {AnnotationEditor} editor
*/
removeEditor(editor) {
if (editor.div.contains(document.activeElement)) {
if (this.#focusMainContainerTimeoutId) {
clearTimeout(this.#focusMainContainerTimeoutId);
}
this.#focusMainContainerTimeoutId = setTimeout(() => {
// When the div is removed from DOM the focus can move on the
// document.body, so we need to move it back to the main container.
this.focusMainContainer();
this.#focusMainContainerTimeoutId = null;
}, 0);
}
this.#allEditors.delete(editor.id);
this.unselect(editor);
if (