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 ("
", "