From edb8e805b2b9e399713f8221eafdfdaa631e4562 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 19 Jun 2022 19:32:32 +0530 Subject: [PATCH] ... --- src/calibre/gui2/actions/view.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/actions/view.py b/src/calibre/gui2/actions/view.py index 7c5bad9ca9..c740554f26 100644 --- a/src/calibre/gui2/actions/view.py +++ b/src/calibre/gui2/actions/view.py @@ -9,7 +9,7 @@ import json import os import time from functools import partial -from qt.core import QAction, QIcon, Qt, pyqtSignal, QDialog +from qt.core import QAction, QIcon, Qt, pyqtSignal, QDialog, QApplication, QCursor from calibre.constants import ismacos, iswindows from calibre.gui2 import ( @@ -23,6 +23,15 @@ from calibre.utils.config import prefs, tweaks from polyglot.builtins import as_bytes +class BusyCursor: + + def __enter__(self): + QApplication.setOverrideCursor(QCursor(Qt.CursorShape.WaitCursor)) + + def __exit__(self, *args): + QApplication.restoreOverrideCursor() + + def preferred_format(formats): formats = tuple(x.upper() for x in formats if x) fmt = formats[0] @@ -159,8 +168,7 @@ class ViewAction(InterfaceAction): self._view_file(job.result) def _launch_viewer(self, name=None, viewer='ebook-viewer', internal=True, calibre_book_data=None, open_at=None): - self.gui.setCursor(Qt.CursorShape.BusyCursor) - try: + with BusyCursor(): if internal: args = [viewer] if ismacos and 'ebook' in viewer: @@ -198,8 +206,6 @@ class ViewAction(InterfaceAction): open_local_file(name) time.sleep(2) # User feedback - finally: - self.gui.unsetCursor() def _view_file(self, name, calibre_book_data=None, open_at=None): ext = os.path.splitext(name)[1].upper().replace('.',