From 6ef460e74a89d40aafb52aad1fa5a703a8d27839 Mon Sep 17 00:00:00 2001 From: Abdo Date: Mon, 5 Dec 2022 08:08:38 +0300 Subject: [PATCH] Close MathJax editor when Esc is pressed (#2237) --- qt/aqt/data/web/js/webview.ts | 6 ++++-- qt/aqt/webview.py | 8 ++------ ts/editor/mathjax-overlay/MathjaxEditor.svelte | 5 ++++- ts/editor/mathjax-overlay/MathjaxOverlay.svelte | 1 + 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/qt/aqt/data/web/js/webview.ts b/qt/aqt/data/web/js/webview.ts index 6c812bef8..59f904fb1 100644 --- a/qt/aqt/data/web/js/webview.ts +++ b/qt/aqt/data/web/js/webview.ts @@ -1,9 +1,11 @@ /* Copyright: Ankitects Pty Ltd and contributors * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */ -// prevent backspace key from going back a page document.addEventListener("keydown", function(evt: KeyboardEvent) { - if (evt.keyCode !== 8) { + if (evt.keyCode === 27) { + pycmd("close"); + } // prevent backspace key from going back a page + else if (evt.keyCode !== 8) { return; } let isText = 0; diff --git a/qt/aqt/webview.py b/qt/aqt/webview.py index 93653f51a..c267d82de 100644 --- a/qt/aqt/webview.py +++ b/qt/aqt/webview.py @@ -247,12 +247,6 @@ class AnkiWebView(QWebEngineView): self.resetHandlers() self._filterSet = False - QShortcut( # type: ignore - QKeySequence("Esc"), - self, - context=Qt.ShortcutContext.WidgetWithChildrenShortcut, - activated=self.onEsc, - ) gui_hooks.theme_did_change.append(self.on_theme_did_change) def set_title(self, title: str) -> None: @@ -601,6 +595,8 @@ html {{ {font} }} if cmd == "domDone": self._domDone = True self._maybeRunActions() + elif cmd == "close": + self.onEsc() else: handled, result = gui_hooks.webview_did_receive_js_message( (False, None), cmd, self._bridge_context diff --git a/ts/editor/mathjax-overlay/MathjaxEditor.svelte b/ts/editor/mathjax-overlay/MathjaxEditor.svelte index 9360f000b..381b89987 100644 --- a/ts/editor/mathjax-overlay/MathjaxEditor.svelte +++ b/ts/editor/mathjax-overlay/MathjaxEditor.svelte @@ -51,7 +51,10 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html editor.on( "keydown", (_instance: CodeMirrorLib.Editor, event: KeyboardEvent): void => { - if (isArrowLeft(event)) { + if (event.key === "Escape") { + dispatch("close"); + event.stopPropagation(); + } else if (isArrowLeft(event)) { direction = "start"; } else if (isArrowRight(event)) { direction = "end"; diff --git a/ts/editor/mathjax-overlay/MathjaxOverlay.svelte b/ts/editor/mathjax-overlay/MathjaxOverlay.svelte index 5d10889d5..3e80819dd 100644 --- a/ts/editor/mathjax-overlay/MathjaxOverlay.svelte +++ b/ts/editor/mathjax-overlay/MathjaxOverlay.svelte @@ -228,6 +228,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html // the user has to click twice (focus is called before blur?) resetHandle(); }} + on:close={resetHandle} let:editor={mathjaxEditor} >