diff --git a/navigator/components/NavEntry.js b/navigator/components/NavEntry.js index a4685f7..f5acae6 100644 --- a/navigator/components/NavEntry.js +++ b/navigator/components/NavEntry.js @@ -306,7 +306,18 @@ export class NavEntry { if (!element.editor) return; element.hide_func = () => {this.hide_edit(element)}; - element.editor.onchange = element.hide_func; + element.keydown_handler = (e) => { + switch (e.keyCode) { + case 13: // enter + this.apply_edit(element); + case 27: // esc + this.hide_edit(element); + break; + default: + break; + } + }; + element.editor.addEventListener("keydown", element.keydown_handler); window.addEventListener("click", element.hide_func); switch (element) { case this.dom_element.nav_item_title: @@ -322,7 +333,7 @@ export class NavEntry { element.editor.focus(); } - hide_edit(element) { + apply_edit(element) { if (!element.editor) return; switch (element) { @@ -332,8 +343,14 @@ export class NavEntry { default: break; } + } + + hide_edit(element) { + if (!element.editor) + return; element.editor.style.display = "none"; element.style.display = "inline-block"; + element.editor.removeEventListener("keydown", element.keydown_handler) window.removeEventListener("click", element.hide_func); } diff --git a/navigator/components/NavWindow.js b/navigator/components/NavWindow.js index e5a7f04..26149cb 100644 --- a/navigator/components/NavWindow.js +++ b/navigator/components/NavWindow.js @@ -55,7 +55,6 @@ export class NavWindow { * @param {Event} e */ handleEvent(e) { - e.stopPropagation(); switch (e.type) { case "click": if (e.target === this.window) {