diff --git a/src/calibre/gui2/keyboard.py b/src/calibre/gui2/keyboard.py index f401714882..d782ba11a6 100644 --- a/src/calibre/gui2/keyboard.py +++ b/src/calibre/gui2/keyboard.py @@ -10,7 +10,7 @@ from collections import OrderedDict from functools import partial from qt.core import (QObject, QKeySequence, QAbstractItemModel, QModelIndex, QItemSelectionModel, - Qt, QStyledItemDelegate, QTextDocument, QStyle, pyqtSignal, QFrame, QAbstractItemView, + Qt, QStyledItemDelegate, QTextDocument, QStyle, pyqtSignal, QFrame, QAbstractItemView, QMenu, QApplication, QSize, QRectF, QWidget, QTreeView, QHBoxLayout, QVBoxLayout, QAbstractItemDelegate, QGridLayout, QLabel, QRadioButton, QPushButton, QToolButton, QIcon, QEvent, sip) @@ -658,6 +658,8 @@ class ShortcutConfig(QWidget): # {{{ self.view.setAlternatingRowColors(True) self.view.setHeaderHidden(True) self.view.setAnimated(True) + self.view.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) + self.view.customContextMenuRequested.connect(self.show_context_menu) l.addWidget(self.view) self.delegate = Delegate() self.view.setItemDelegate(self.delegate) @@ -678,6 +680,12 @@ class ShortcutConfig(QWidget): # {{{ h.addWidget(self.nb), h.addWidget(self.pb) h.setStretch(0, 100) + def show_context_menu(self, pos): + menu = QMenu(self) + menu.addAction(_('Expand all'), self.view.expandAll) + menu.addAction(_('Collapse all'), self.view.collapseAll) + menu.exec_(self.view.mapToGlobal(pos)) + def restore_defaults(self): self._model.restore_defaults() self.changed_signal.emit()