From d48038cc29bf8c6344a728ded5f9d477dc9859bc Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 31 Jan 2020 08:47:05 +1000 Subject: [PATCH] ignore immediate=True in progress dialog Instead, set the busy cursor immediately to give the user feedback, but defer popup for at least 500ms. This will hopefully address the white flash in night mode on Windows, and prevent progress dialogs from rapidly appearing and disappearing for short operations. --- qt/aqt/progress.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/qt/aqt/progress.py b/qt/aqt/progress.py index 76a36c2ac..cebee57d4 100644 --- a/qt/aqt/progress.py +++ b/qt/aqt/progress.py @@ -106,6 +106,7 @@ class ProgressManager: evt.ignore() self.wantCancel = True + # note: immediate is no longer used def start(self, max=0, min=0, label=None, parent=None, immediate=False): self._levels += 1 if self._levels > 1: @@ -124,10 +125,8 @@ class ProgressManager: self._win.setWindowTitle("Anki") self._win.setWindowModality(Qt.ApplicationModal) self._win.setMinimumWidth(300) - if immediate: - self._showWin() - else: - self._shown = False + self._setBusy() + self._shown = False self._counter = min self._min = min self._max = max @@ -159,8 +158,10 @@ class ProgressManager: def finish(self): self._levels -= 1 self._levels = max(0, self._levels) - if self._levels == 0 and self._win: - self._closeWin() + if self._levels == 0: + if self._win: + self._closeWin() + self._unsetBusy() def clear(self): "Restore the interface after an error." @@ -181,7 +182,6 @@ class ProgressManager: def _showWin(self): self._shown = time.time() self._win.show() - self._setBusy() def _closeWin(self): if self._shown: @@ -197,7 +197,6 @@ class ProgressManager: self._win.cancel() self._win = None self._shown = False - self._unsetBusy() def _setBusy(self): self.mw.app.setOverrideCursor(QCursor(Qt.WaitCursor))