From ccce0818ccbc18ea402cb88794999a265142ddb3 Mon Sep 17 00:00:00 2001 From: Juraj Oravec Date: Sat, 10 Aug 2024 12:22:05 +0200 Subject: [PATCH] VerticalTabs: Fix tab switching with mouse wheel Respect the "Always switch between tabs with mouse wheel" option. BUG: 394066 FIXED-IN: 24.12.0 Signed-off-by: Juraj Oravec --- src/plugins/VerticalTabs/tabtreeview.cpp | 13 +++++++++++++ src/plugins/VerticalTabs/verticaltabswidget.cpp | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/VerticalTabs/tabtreeview.cpp b/src/plugins/VerticalTabs/tabtreeview.cpp index 568d14a37..77acea112 100644 --- a/src/plugins/VerticalTabs/tabtreeview.cpp +++ b/src/plugins/VerticalTabs/tabtreeview.cpp @@ -23,10 +23,12 @@ #include "webtab.h" #include "tabcontextmenu.h" #include "browserwindow.h" +#include "qzsettings.h" #include #include #include +#include TabTreeView::TabTreeView(BrowserWindow *window, QWidget *parent) : QTreeView(parent) @@ -161,6 +163,10 @@ void TabTreeView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bot if (roles.size() == 1 && roles.at(0) == TabModel::CurrentTabRole && topLeft.data(TabModel::CurrentTabRole).toBool()) { setCurrentIndex(topLeft); + + if (qzSettings->alwaysSwitchTabsWithWheel && verticalScrollBar()->isVisible()) { + scrollTo(indexAbove(topLeft)); + } } } @@ -335,6 +341,13 @@ bool TabTreeView::viewportEvent(QEvent *event) break; } + case QEvent::Wheel: { + if (qzSettings->alwaysSwitchTabsWithWheel) { + event->ignore(); + return false; + } + } + default: break; } diff --git a/src/plugins/VerticalTabs/verticaltabswidget.cpp b/src/plugins/VerticalTabs/verticaltabswidget.cpp index d3d54547e..6d78dc78b 100644 --- a/src/plugins/VerticalTabs/verticaltabswidget.cpp +++ b/src/plugins/VerticalTabs/verticaltabswidget.cpp @@ -26,6 +26,7 @@ #include "toolbutton.h" #include "tabtreemodel.h" #include "browserwindow.h" +#include "qzsettings.h" #include #include @@ -159,7 +160,7 @@ WebTab *VerticalTabsWidget::previousTab() const void VerticalTabsWidget::wheelEvent(QWheelEvent *event) { - if (m_normalView->verticalScrollBar()->isVisible()) { + if (!qzSettings->alwaysSwitchTabsWithWheel && m_normalView->verticalScrollBar()->isVisible()) { return; }