Explode onBridgeCmd
This way, an add-on can catch a blur command, do its change and then call self.blur
This commit is contained in:
parent
beee1f10e0
commit
9f4c4ea355
@ -367,48 +367,59 @@ class Editor:
|
||||
# shutdown
|
||||
return
|
||||
# focus lost or key/button pressed?
|
||||
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()
|
||||
type, remaining = cmd.split(":", 1)
|
||||
if type == "blur":
|
||||
self.onBlur(*remaining.split(":", 2))
|
||||
elif type == "key":
|
||||
self.onKey(*remaining.split(":", 2))
|
||||
# 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 type == "focus":
|
||||
self.onFocus(remaining)
|
||||
elif cmd in self._links:
|
||||
self._links[cmd](self)
|
||||
else:
|
||||
print("uncaught cmd", cmd)
|
||||
|
||||
def onBlurOrKey(self, ord, nid, txt):
|
||||
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()
|
||||
|
||||
def onBlur(self, ord, nid, txt):
|
||||
self.onBlurOrKey(ord, nid, txt)
|
||||
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, ord, nid, txt):
|
||||
self.onBlurOrKey(ord, nid, txt)
|
||||
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 ("<br>", "<div><br></div>"):
|
||||
return ""
|
||||
|
Loading…
Reference in New Issue
Block a user