From 654cdf65a672db2a2bc1e75eeb7e52857b349dca Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 10 Feb 2014 19:20:23 +0530 Subject: [PATCH] When tapping on a link int he document, activate the link instead of turning the page --- src/calibre/gui2/viewer/gestures.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/viewer/gestures.py b/src/calibre/gui2/viewer/gestures.py index af869832fa..5cfa3fdffa 100644 --- a/src/calibre/gui2/viewer/gestures.py +++ b/src/calibre/gui2/viewer/gestures.py @@ -243,9 +243,16 @@ class GestureHandler(QObject): if self.close_open_menu(): return view = self.parent() - threshold = view.width() / 3.0 - attr = 'previous' if tp.start_position.x() <= threshold else 'next' - getattr(view, '%s_page'%attr)() + mf = view.document.mainFrame() + r = mf.hitTestContent(tp.current_position.toPoint()) + if r.linkElement().isNull(): + threshold = view.width() / 3.0 + attr = 'previous' if tp.start_position.x() <= threshold else 'next' + getattr(view, '%s_page'%attr)() + else: + for etype in (QEvent.MouseButtonPress, QEvent.MouseButtonRelease): + ev = QMouseEvent(etype, tp.current_position.toPoint(), tp.current_screen_position.toPoint(), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier) + QApplication.sendEvent(view, ev) def handle_tap_hold(self, action, tp): etype = {'start':QEvent.MouseButtonPress, 'update':QEvent.MouseMove, 'end':QEvent.MouseButtonRelease}[action]