diff --git a/aqt/addcards.py b/aqt/addcards.py index 365618881..d4e7e27c8 100644 --- a/aqt/addcards.py +++ b/aqt/addcards.py @@ -28,6 +28,7 @@ class AddCards(QDialog): self.setupButtons() self.onReset() self.history = [] + self.previousNote = None restoreGeom(self, "add") addHook('reset', self.onReset) addHook('currentModelChanged', self.onModelChange) @@ -83,6 +84,7 @@ class AddCards(QDialog): def onModelChange(self): oldNote = self.editor.note note = self.mw.col.newNote() + self.previousNote = None if oldNote: oldFields = list(oldNote.keys()) newFields = list(note.keys()) @@ -176,6 +178,7 @@ question on all cards."""), help="AddItems") return self.addHistory(note) self.mw.requireReset() + self.previousNote = note return note def addCards(self): @@ -183,9 +186,7 @@ question on all cards."""), help="AddItems") def _addCards(self): self.editor.saveAddModeVars() - note = self.editor.note - note = self.addNote(note) - if not note: + if not self.addNote(self.editor.note): return tooltip(_("Added"), period=500) # stop anything playing @@ -219,7 +220,7 @@ question on all cards."""), help="AddItems") def ifCanClose(self, onOk): def afterSave(): - ok = (self.editor.fieldsAreBlank() or + ok = (self.editor.fieldsAreBlank(self.previousNote) or askUser(_("Close and lose current input?"), defaultno=True)) if ok: onOk() diff --git a/aqt/editor.py b/aqt/editor.py index a190febf8..ad8d1f508 100644 --- a/aqt/editor.py +++ b/aqt/editor.py @@ -371,12 +371,15 @@ class Editor: contents)) browser.onSearchActivated() - def fieldsAreBlank(self): + def fieldsAreBlank(self, previousNote=None): if not self.note: return True m = self.note.model() for c, f in enumerate(self.note.fields): - if f and not m['flds'][c]['sticky']: + notChangedvalues = {"", "
"} + if previousNote and m['flds'][c]['sticky']: + notChangedvalues.add(previousNote.fields[c]) + if f not in notChangedvalues: return False return True