From d5c83e5721e575e6b026076596c352042cb9e9b7 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 24 May 2022 19:40:47 +0530 Subject: [PATCH] Book details popup: Double clicking on the cover now uses calibre's internal image viewer. Right click on the cover to open it with another program. Fixes #1975406 [[Enhancement] Double click to open cover with the calibre Image viewer](https://bugs.launchpad.net/calibre/+bug/1975406) --- src/calibre/gui2/init.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index e20ea42ec9..d3d58a5747 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -7,9 +7,9 @@ __docformat__ = 'restructuredtext en' import functools from qt.core import ( - QAction, QApplication, QDialog, QEvent, QIcon, QLabel, QMenu, QStylePainter, - QSizePolicy, QSplitter, QStackedWidget, QStatusBar, QStyle, QStyleOption, Qt, - QTabBar, QTimer, QToolButton, QVBoxLayout, QWidget + QAction, QApplication, QDialog, QEvent, QIcon, QLabel, QMenu, QPixmap, QUrl, + QSizePolicy, QSplitter, QStackedWidget, QStatusBar, QStyle, QStyleOption, + QStylePainter, Qt, QTabBar, QTimer, QToolButton, QVBoxLayout, QWidget ) from calibre.constants import get_appname_for_display, get_version, ismacos @@ -741,7 +741,15 @@ class LayoutMixin: # {{{ cpath = self.current_db.new_api.format_abspath(book_id, '__COVER_INTERNAL__') if cpath: if entry is None: - open_local_file(cpath) + pm = QPixmap() + pm.load(cpath) + pm.setDevicePixelRatio(self.devicePixelRatioF()) + if pm.isNull(): + open_local_file(cpath) + else: + from calibre.gui2.image_popup import ImageView + iv = ImageView(QApplication.instance().focusWindow(), pm, QUrl.fromLocalFile(cpath), geom_name='book_details_image_view') + iv(use_exec=True) return from calibre.gui2.open_with import run_program run_program(entry, cpath, self)