mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 07:22:23 -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
|
||||
_lastPreviewRender = 0
|
||||
_lastPreviewState = None
|
||||
|
||||
def onTogglePreview(self):
|
||||
if self._previewWindow:
|
||||
|
@ -1385,15 +1386,22 @@ where id in %s""" % ids2str(sf))
|
|||
txt = _("(please select 1 card)")
|
||||
bodyclass = ""
|
||||
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
|
||||
txt = c.q(reload=True)
|
||||
|
||||
questionAudio = []
|
||||
if self._previewBothSides:
|
||||
self._previewState = "answer"
|
||||
questionAudio = allSounds(txt)
|
||||
elif cardChanged:
|
||||
self._previewState = "question"
|
||||
if self._previewState == "answer":
|
||||
func = "_showAnswer"
|
||||
txt = c.a()
|
||||
|
@ -1414,7 +1422,7 @@ where id in %s""" % ids2str(sf))
|
|||
txt = mungeQA(self.col, txt)
|
||||
txt = runFilter("prepareQA", txt, c,
|
||||
"preview"+self._previewState.capitalize())
|
||||
|
||||
self._lastPreviewState = self._previewStateAndMod()
|
||||
self._updatePreviewButtons()
|
||||
self._previewWeb.eval(
|
||||
"{}({},'{}');".format(func, json.dumps(txt), bodyclass))
|
||||
|
@ -1427,6 +1435,9 @@ where id in %s""" % ids2str(sf))
|
|||
self._previewState = "question"
|
||||
self._renderPreview()
|
||||
|
||||
def _previewStateAndMod(self):
|
||||
return (self._previewState, self.card.note().mod)
|
||||
|
||||
# Card deletion
|
||||
######################################################################
|
||||
|
||||
|
|
Loading…
Reference in a new issue