From 33d2d0e5ea5136f99ab9fe4166602f8a5c6424e4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Oct 2014 17:40:31 +0530 Subject: [PATCH] E-book viewer: Allow right clicking on the toolbar buttons to popup the optional menus, useful when using the viewer on a touch screen. Fixes #1380359 [Feature Request: right-click menus missing in ebook viewer](https://bugs.launchpad.net/calibre/+bug/1380359) --- src/calibre/gui2/viewer/ui.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 704a1f7b70..0066f25411 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -178,6 +178,19 @@ def test_history(): assert h == [0, 9] # }}} +class ToolBar(QToolBar): # {{{ + + def contextMenuEvent(self, ev): + ac = self.actionAt(ev.pos()) + if ac is None: + return + ch = self.widgetForAction(ac) + sm = getattr(ch, 'showMenu', None) + if callable(sm): + ev.accept() + sm() +# }}} + class Main(MainWindow): def __init__(self, debug_javascript): @@ -209,14 +222,14 @@ class Main(MainWindow): hs.setOrientation(Qt.Vertical), hs.setObjectName("horizontal_scrollbar") cl.addWidget(hs, 1, 0, 1, 1) - self.tool_bar = tb = QToolBar(self) + self.tool_bar = tb = ToolBar(self) tb.setObjectName('tool_bar'), tb.setIconSize(QSize(32, 32)) self.addToolBar(Qt.LeftToolBarArea, tb) self.tool_bar2 = tb2 = QToolBar(self) tb2.setObjectName('tool_bar2') self.addToolBar(Qt.TopToolBarArea, tb2) - self.tool_bar.setContextMenuPolicy(Qt.PreventContextMenu) + self.tool_bar.setContextMenuPolicy(Qt.DefaultContextMenu) self.tool_bar2.setContextMenuPolicy(Qt.PreventContextMenu) self.pos = DoubleSpinBox()