From 47bd6264bdd03b835eba2adf4c52ffa66735d7d0 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 28 Mar 2020 13:35:05 +1000 Subject: [PATCH] Revert "Merge pull request #527 from Arthur-Milchior/explode_on_bridge_cmd" This reverts commit 2264fe3f66871fc98d8a071b7be5d8a66983672c, reversing changes made to 84b84ae31c264b4e6f70b3c9303b5a9f11438153. Causes a traceback when opening the add screen, clicking on Type, and choosing a note type. File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 31, in cmd return json.dumps(self.onCmd(str)) File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 97, in _onCmd return self._onBridgeCmd(str) File "/Users/dae/Work/code/dtop/qt/aqt/webview.py", line 500, in _onBridgeCmd return self.onBridgeCmd(cmd) File "/Users/dae/Work/code/dtop/qt/aqt/editor.py", line 374, in onBridgeCmd self._links[cmd](self, *args) # type: ignore File "/Users/dae/Work/code/dtop/qt/aqt/editor.py", line 404, in onBlur if gui_hooks.editor_did_unfocus_field(False, self.note, int(ord)): TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' --- qt/aqt/editor.py | 89 +++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 50 deletions(-) diff --git a/qt/aqt/editor.py b/qt/aqt/editor.py index 00980aebe..b269df969 100644 --- a/qt/aqt/editor.py +++ b/qt/aqt/editor.py @@ -367,56 +367,48 @@ class Editor: # shutdown return # focus lost or key/button pressed? - splitted = cmd.split(":", 1) - cmd = splitted[0] - args = splitted[1:] - if cmd in self._links: - self._links[cmd](self, *args) # type: ignore + if cmd.startswith("blur") or cmd.startswith("key"): + (type, ord, nid, txt) = cmd.split(":", 3) + ord = int(ord) + try: + nid = int(nid) + except ValueError: + nid = 0 + if nid != self.note.id: + print("ignored late blur") + return + txt = unicodedata.normalize("NFC", txt) + txt = self.mungeHTML(txt) + # misbehaving apps may include a null byte in the text + txt = txt.replace("\x00", "") + # reverse the url quoting we added to get images to display + txt = self.mw.col.media.escapeImages(txt, unescape=True) + self.note.fields[ord] = txt + if not self.addMode: + self.note.flush() + self.mw.requireReset() + if type == "blur": + self.currentField = None + # run any filters + if gui_hooks.editor_did_unfocus_field(False, self.note, ord): + # something updated the note; update it after a subsequent focus + # event has had time to fire + self.mw.progress.timer(100, self.loadNoteKeepingFocus, False) + else: + self.checkValid() + else: + gui_hooks.editor_did_fire_typing_timer(self.note) + self.checkValid() + # focused into field? + elif cmd.startswith("focus"): + (type, num) = cmd.split(":", 1) + self.currentField = int(num) + gui_hooks.editor_did_focus_field(self.note, self.currentField) + elif cmd in self._links: + self._links[cmd](self) else: print("uncaught cmd", cmd) - def onBlurOrKey(self, args): - ord, nid, txt = args.split(":", 2) - ord = int(ord) - try: - nid = int(nid) - except ValueError: - nid = 0 - if nid != self.note.id: - print("ignored late blur") - return - txt = unicodedata.normalize("NFC", txt) - txt = self.mungeHTML(txt) - # misbehaving apps may include a null byte in the text - txt = txt.replace("\x00", "") - # reverse the url quoting we added to get images to display - txt = self.mw.col.media.escapeImages(txt, unescape=True) - self.note.fields[ord] = txt - if not self.addMode: - self.note.flush() - self.mw.requireReset() - return ord - - def onBlur(self, args): - ord = self.onBlurOrKey(args) - self.currentField = None - # run any filters - if gui_hooks.editor_did_unfocus_field(False, self.note, int(ord)): - # something updated the note; update it after a subsequent focus - # event has had time to fire - self.mw.progress.timer(100, self.loadNoteKeepingFocus, False) - else: - self.checkValid() - - def onKey(self, args): - self.onBlurOrKey(args) - gui_hooks.editor_did_fire_typing_timer(self.note) - self.checkValid() - - def onFocus(self, num): - self.currentField = int(num) - gui_hooks.editor_did_focus_field(self.note, self.currentField) - def mungeHTML(self, txt): if txt in ("
", "

"): return "" @@ -978,9 +970,6 @@ to a cloze type first, via Edit>Change Note Type.""" dupes=showDupes, paste=onPaste, cutOrCopy=onCutOrCopy, - blur=onBlur, - focus=onFocus, - key=onKey, )