From ed665557d5817504500f7c9cd39ccfe975628a5e Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 27 Nov 2018 17:58:38 +1000 Subject: [PATCH] ensure card list updated when editing html using an extra hook is ugly, but there's a risk re-purposing the editTimer hook will break an add-on that assumes the note has already been loaded https://anki.tenderapp.com/discussions/ankidesktop/30972-bug-editing-html-in-browser-not-saved-unless-tabbingclicking-to-other-field --- aqt/browser.py | 5 +++++ aqt/editor.py | 1 + 2 files changed, 6 insertions(+) diff --git a/aqt/browser.py b/aqt/browser.py index 619545031..712bb4c19 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -672,6 +672,9 @@ class Browser(QMainWindow): self.model.refreshNote(note) self._renderPreview(False) + def onLoadNote(self, editor): + self.refreshCurrentCard(editor.note) + def refreshCurrentCardFilter(self, flag, note, fidx): self.refreshCurrentCard(note) return flag @@ -1689,6 +1692,7 @@ update cards set usn=?, mod=?, did=? where id in """ + scids, addHook("undoState", self.onUndoState) addHook("reset", self.onReset) addHook("editTimer", self.refreshCurrentCard) + addHook("loadNote", self.onLoadNote) addHook("editFocusLost", self.refreshCurrentCardFilter) for t in "newTag", "newModel", "newDeck": addHook(t, self.maybeRefreshSidebar) @@ -1696,6 +1700,7 @@ update cards set usn=?, mod=?, did=? where id in """ + scids, def teardownHooks(self): remHook("reset", self.onReset) remHook("editTimer", self.refreshCurrentCard) + remHook("loadNote", self.onLoadNote) remHook("editFocusLost", self.refreshCurrentCardFilter) remHook("undoState", self.onUndoState) for t in "newTag", "newModel", "newDeck": diff --git a/aqt/editor.py b/aqt/editor.py index 816b11184..8472e0a51 100644 --- a/aqt/editor.py +++ b/aqt/editor.py @@ -401,6 +401,7 @@ class Editor: warnings.simplefilter('ignore', UserWarning) html = str(BeautifulSoup(html, "html.parser")) self.note.fields[field] = html + self.note.flush() self.loadNote(focusTo=field) # Tag handling