From 8a0a21aba62b1388a33957fcf00605adda9c58dc Mon Sep 17 00:00:00 2001 From: Abdo Date: Sat, 18 Oct 2025 04:25:25 +0300 Subject: [PATCH] Fix call_after_note_saved() --- qt/aqt/editor.py | 11 ++++++++++- ts/routes/editor/NoteEditor.svelte | 3 +++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index 4862cd960..5938e980a 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -90,6 +90,7 @@ class NewEditor: self.state: EditorState = EditorState.INITIAL self._ready = False self._ready_callbacks: list[Callable[[], None]] = [] + self._saved_callbacks: list[Callable[[], None]] = [] self._init_links() self.setupOuter() self.add_webview() @@ -461,14 +462,21 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too self, callback: Callable, keepFocus: bool = False ) -> None: "Save unsaved edits then call callback()." + if not self.nid: # calling code may not expect the callback to fire immediately self.mw.progress.single_shot(10, callback) return - self.web.evalWithCallback("saveNow(%d)" % keepFocus, lambda res: callback()) + self._saved_callbacks.append(callback) + self.web.eval("saveNow(%d)" % keepFocus) saveNow = call_after_note_saved + def on_note_saved(self) -> None: + for callback in self._saved_callbacks: + callback() + self._saved_callbacks = [] + def cleanup(self) -> None: av_player.stop_and_clear_queue_if_caller(self.editorMode) self.set_note(None) @@ -536,6 +544,7 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too paste=NewEditor.onPaste, cut=NewEditor.onCut, copy=NewEditor.onCopy, + saved=NewEditor.on_note_saved, ) def get_note_info(self, on_done: Callable[[NoteInfo], None]) -> None: diff --git a/ts/routes/editor/NoteEditor.svelte b/ts/routes/editor/NoteEditor.svelte index 6f3b36340..0e848b1ba 100644 --- a/ts/routes/editor/NoteEditor.svelte +++ b/ts/routes/editor/NoteEditor.svelte @@ -443,6 +443,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html closeMathjaxEditor?.(); $commitTagEdits(); await saveFieldNow(); + if(!isLegacy) { + bridgeCommand("saved"); + } } // Used for detecting changed sticky fields on close