From fb77fc26575296849a2ae23c0a87d6a1f0759b22 Mon Sep 17 00:00:00 2001 From: alex-huff Date: Sun, 18 May 2025 11:35:11 -0500 Subject: [PATCH] tabs: allow 'tabs.wrap' to work with scroll wheel QTabBar doesn't wrap when switching between tabs with the scroll wheel so the 'tabs.wrap' option is only respected in the tab* commands. However, 'wheelEvent' is already being overriden for macos so we might as well override it for all platforms and implement wrapping there. Fixes #8521 --- qutebrowser/mainwindow/tabwidget.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py index 8d50ac45d..5a8e3d80a 100644 --- a/qutebrowser/mainwindow/tabwidget.py +++ b/qutebrowser/mainwindow/tabwidget.py @@ -755,21 +755,18 @@ class TabBar(QTabBar): e: The QWheelEvent """ if config.val.tabs.mousewheel_switching: - if utils.is_mac: - # WORKAROUND for this not being customizable until Qt 6: - # https://codereview.qt-project.org/c/qt/qtbase/+/327746 - index = self.currentIndex() - if index == -1: - return - dx = e.angleDelta().x() - dy = e.angleDelta().y() - delta = dx if abs(dx) > abs(dy) else dy - offset = -1 if delta > 0 else 1 - index += offset - if 0 <= index < self.count(): - self.setCurrentIndex(index) - else: - super().wheelEvent(e) + index = self.currentIndex() + if index == -1: + return + dx = e.angleDelta().x() + dy = e.angleDelta().y() + delta = dx if abs(dx) > abs(dy) else dy + offset = -1 if delta > 0 else 1 + index += offset + if config.val.tabs.wrap: + index %= self.count() + if 0 <= index < self.count(): + self.setCurrentIndex(index) else: tabbed_browser = objreg.get('tabbed-browser', scope='window', window=self._win_id)