From c07f2d07474b52c065539fe9e56cbc6047856ad8 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 26 Feb 2019 11:18:32 +1000 Subject: [PATCH] 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) --- aqt/browser.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/aqt/browser.py b/aqt/browser.py index 8a4cfa371..42bd5781a 100644 --- a/aqt/browser.py +++ b/aqt/browser.py @@ -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 ######################################################################