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 ######################################################################