From b966cdcef763b389968682bd7ead7bc49445e4c0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 1 Jan 2020 10:08:50 +0530 Subject: [PATCH] Viewer: Allow right clicking in the lookup panel to zoom in/out. Fixes #1857989 [Increase font size of "Lookup" pop-up [enhancement]](https://bugs.launchpad.net/calibre/+bug/1857989) --- src/calibre/gui2/viewer/lookup.py | 25 +++++++++++++++++++++++-- src/calibre/gui2/viewer/web_view.py | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/viewer/lookup.py b/src/calibre/gui2/viewer/lookup.py index 296d07789c..9abdd6c256 100644 --- a/src/calibre/gui2/viewer/lookup.py +++ b/src/calibre/gui2/viewer/lookup.py @@ -20,7 +20,7 @@ from PyQt5.QtWebEngineWidgets import ( from calibre import prints, random_user_agent from calibre.constants import cache_dir from calibre.gui2 import error_dialog -from calibre.gui2.viewer.web_view import vprefs +from calibre.gui2.viewer.web_view import apply_font_settings, vprefs from calibre.gui2.webengine import create_script, insert_scripts, secure_webengine from calibre.gui2.widgets2 import Dialog @@ -209,6 +209,26 @@ class Page(QWebEnginePage): prints('%s: %s:%s: %s' % (prefix, source_id, linenumber, msg), file=sys.stderr) sys.stderr.flush() + def zoom_in(self): + self.setZoomFactor(min(self.zoomFactor() + 0.25, 5)) + + def zoom_out(self): + self.setZoomFactor(max(0.25, self.zoomFactor() - 0.25)) + + def default_zoom(self): + self.setZoomFactor(1) + + +class View(QWebEngineView): + + def contextMenuEvent(self, ev): + menu = self.page().createStandardContextMenu() + menu.addSeparator() + menu.addAction(_('Zoom in'), self.page().zoom_in) + menu.addAction(_('Zoom out'), self.page().zoom_out) + menu.addAction(_('Default zoom'), self.page().default_zoom) + menu.exec_(ev.globalPos()) + class Lookup(QWidget): @@ -226,8 +246,9 @@ class Lookup(QWidget): self.source_box = sb = QComboBox(self) self.label = la = QLabel(_('Lookup &in:')) h.addWidget(la), h.addWidget(sb), la.setBuddy(sb) - self.view = QWebEngineView(self) + self.view = View(self) self._page = Page(create_profile(), self.view) + apply_font_settings(self._page) secure_webengine(self._page, for_viewer=True) self.view.setPage(self._page) l.addWidget(self.view) diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 1d351ef6ec..66ec449a6c 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -504,7 +504,7 @@ class WebView(RestartingWebEngineView): # TODO: Add UI for this ss = vprefs['session_data'].get('zoom_step_size') or 20 amt = (ss / 100) * steps - self._page.setZoomFactor(self._page.zoomFactor() + amt) + self._page.setZoomFactor(max(0.25, min(self._page.zoomFactor() + amt, 5))) def render_process_died(self): if self.dead_renderer_error_shown: