From bcbdf9090ffac92eecbb2573756a63c66c9dab1c Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 15 Jul 2014 22:22:10 +0200 Subject: [PATCH] Make tab close mouse button configurable --- qutebrowser/config/configdata.py | 6 +++--- qutebrowser/config/conftypes.py | 9 +++++++++ qutebrowser/widgets/tabwidget.py | 21 ++++++++++----------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 3229e62f5..8160b4b7a 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -401,9 +401,9 @@ DATA = OrderedDict([ SettingValue(types.Bool(), 'true'), "Whether tabs should be movable."), - ('close-on-right-click', - SettingValue(types.Bool(), 'false'), - "Whether tabs should close when right-clicked."), + ('close-mouse-button', + SettingValue(types.CloseButton(), 'middle'), + "On which mouse button to close tabs."), ('position', SettingValue(types.Position(), 'north'), diff --git a/qutebrowser/config/conftypes.py b/qutebrowser/config/conftypes.py index 17c7234b0..c9ea0c2c9 100644 --- a/qutebrowser/config/conftypes.py +++ b/qutebrowser/config/conftypes.py @@ -935,3 +935,12 @@ class ForwardUnboundKeys(BaseType): ('auto', "Forward unbound non-alphanumeric " "keys."), ('none', "Don't forward any keys.")) + + +class CloseButton(BaseType): + + """Whether to forward unbound keys.""" + + valid_values = ValidValues(('right', "Close tabs on right-click."), + ('middle', "Close tabs on middle-click."), + ('none', "Don't close tabs using the mouse.")) diff --git a/qutebrowser/widgets/tabwidget.py b/qutebrowser/widgets/tabwidget.py index 1854bac7e..23597d8fd 100644 --- a/qutebrowser/widgets/tabwidget.py +++ b/qutebrowser/widgets/tabwidget.py @@ -126,17 +126,16 @@ class TabBar(QTabBar): self.count()) def mousePressEvent(self, e): - """Override mousePressEvent to emit tabCloseRequested on rightclick.""" - if e.button() != Qt.RightButton: - super().mousePressEvent(e) - return - idx = self.tabAt(e.pos()) - if idx == -1: - super().mousePressEvent(e) - return - e.accept() - if config.get('tabbar', 'close-on-right-click'): - self.tabCloseRequested.emit(idx) + """Override mousePressEvent to close tabs if configured.""" + button = config.get('tabbar', 'close-mouse-button') + if (e.button() == Qt.RightButton and button == 'right' or + e.button() == Qt.MiddleButton and button == 'middle'): + idx = self.tabAt(e.pos()) + if idx != -1: + e.accept() + self.tabCloseRequested.emit(idx) + return + super().mousePressEvent(e) def minimumTabSizeHint(self, index): """Override minimumTabSizeHint because we want no hard minimum.