mirror of
https://github.com/ankitects/anki.git
synced 2025-09-22 07:52:24 -04:00
avoid refreshing preview when nothing has changed
fixes visible redraw when: - opening preview screen while cursor in field (as editTimer fires even if note has not changed) - moving between cards (as loadNote and rowChanged hooks are both fired)
This commit is contained in:
parent
4116ab65b0
commit
c07f2d0747
1 changed files with 15 additions and 4 deletions
|
@ -1253,6 +1253,7 @@ where id in %s""" % ids2str(sf))
|
||||||
|
|
||||||
_previewTimer = None
|
_previewTimer = None
|
||||||
_lastPreviewRender = 0
|
_lastPreviewRender = 0
|
||||||
|
_lastPreviewState = None
|
||||||
|
|
||||||
def onTogglePreview(self):
|
def onTogglePreview(self):
|
||||||
if self._previewWindow:
|
if self._previewWindow:
|
||||||
|
@ -1385,15 +1386,22 @@ where id in %s""" % ids2str(sf))
|
||||||
txt = _("(please select 1 card)")
|
txt = _("(please select 1 card)")
|
||||||
bodyclass = ""
|
bodyclass = ""
|
||||||
else:
|
else:
|
||||||
|
if self._previewBothSides:
|
||||||
|
self._previewState = "answer"
|
||||||
|
elif cardChanged:
|
||||||
|
self._previewState = "question"
|
||||||
|
|
||||||
|
currentState = self._previewStateAndMod()
|
||||||
|
if currentState == self._lastPreviewState:
|
||||||
|
# nothing has changed, avoid refreshing
|
||||||
|
return
|
||||||
|
|
||||||
# need to force reload even if answer
|
# need to force reload even if answer
|
||||||
txt = c.q(reload=True)
|
txt = c.q(reload=True)
|
||||||
|
|
||||||
questionAudio = []
|
questionAudio = []
|
||||||
if self._previewBothSides:
|
if self._previewBothSides:
|
||||||
self._previewState = "answer"
|
|
||||||
questionAudio = allSounds(txt)
|
questionAudio = allSounds(txt)
|
||||||
elif cardChanged:
|
|
||||||
self._previewState = "question"
|
|
||||||
if self._previewState == "answer":
|
if self._previewState == "answer":
|
||||||
func = "_showAnswer"
|
func = "_showAnswer"
|
||||||
txt = c.a()
|
txt = c.a()
|
||||||
|
@ -1414,7 +1422,7 @@ where id in %s""" % ids2str(sf))
|
||||||
txt = mungeQA(self.col, txt)
|
txt = mungeQA(self.col, txt)
|
||||||
txt = runFilter("prepareQA", txt, c,
|
txt = runFilter("prepareQA", txt, c,
|
||||||
"preview"+self._previewState.capitalize())
|
"preview"+self._previewState.capitalize())
|
||||||
|
self._lastPreviewState = self._previewStateAndMod()
|
||||||
self._updatePreviewButtons()
|
self._updatePreviewButtons()
|
||||||
self._previewWeb.eval(
|
self._previewWeb.eval(
|
||||||
"{}({},'{}');".format(func, json.dumps(txt), bodyclass))
|
"{}({},'{}');".format(func, json.dumps(txt), bodyclass))
|
||||||
|
@ -1427,6 +1435,9 @@ where id in %s""" % ids2str(sf))
|
||||||
self._previewState = "question"
|
self._previewState = "question"
|
||||||
self._renderPreview()
|
self._renderPreview()
|
||||||
|
|
||||||
|
def _previewStateAndMod(self):
|
||||||
|
return (self._previewState, self.card.note().mod)
|
||||||
|
|
||||||
# Card deletion
|
# Card deletion
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue