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)

This commit is contained in:
Kovid Goyal 2020-01-01 10:08:50 +05:30
parent 4bc07eba10
commit b966cdcef7
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 24 additions and 3 deletions

View File

@ -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)

View File

@ -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: