fix undo log bugs by ensuring deck not touched after close

This commit is contained in:
Damien Elmes 2009-01-05 03:22:37 +09:00
parent bb5ff4eb7c
commit 104b4ecbba
2 changed files with 9 additions and 1 deletions

View file

@ -11,6 +11,7 @@ import anki.sound
from ankiqt import ui
import ankiqt
from ankiqt.ui.utils import mungeQA, saveGeom, restoreGeom
from anki.hooks import addHook
class FactEditor(object):
"""An editor for new/existing facts.
@ -31,6 +32,7 @@ class FactEditor(object):
self.onFactInvalid = None
self.lastFocusedEdit = None
self.changeTimer = None
addHook("deckClosed", self.deckClosedHook)
def setFact(self, fact, noFocus=False, check=False):
"Make FACT the current fact."
@ -57,6 +59,9 @@ class FactEditor(object):
def initMedia(self):
os.chdir(self.deck.mediaDir(create=True))
def deckClosedHook(self):
self.fact = None
def setupFields(self):
# init for later
self.fields = {}
@ -319,7 +324,7 @@ class FactEditor(object):
def onFocusLost(self, widget):
if self.fact is None:
# editor closed
# editor or deck closed
return
self.saveFields()
field = self.widgets[widget]
@ -339,6 +344,8 @@ class FactEditor(object):
self.onChangeTimer)
def onChangeTimer(self):
if not self.fact:
return
self.saveFields()
self.checkValid()
if self.onChange:

View file

@ -672,6 +672,7 @@ Error was:\n%(f1)s\n...\n%(f2)s""") % {'f1': fmt1, 'f2': fmt2})
self.deck.rollback()
self.deck.close()
self.deck = None
runHook("deckClosed")
if not hideWelcome:
self.moveToState("noDeck")
else: