From d2a921ea803a69eb3ab1b416bdaf559b82ea18fb Mon Sep 17 00:00:00 2001 From: Andre Rummler Date: Tue, 11 Aug 2026 23:58:30 +0200 Subject: [PATCH] Fixing MacOS only GUI adjustment relying on QWheelEvent->delta() which was removed in Qt6. Some simplification was possible but no test due to lack of OS. Discovered due to new CI. --- sources/projectview.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sources/projectview.h b/sources/projectview.h index 2f9b5c92a..dfbd03987 100644 --- a/sources/projectview.h +++ b/sources/projectview.h @@ -35,28 +35,28 @@ public: : QTabWidget(parent) {} - double temp_index = 0; - void wheelEvent(QWheelEvent *event) override { - int index = currentIndex(); - double delta = 0; - double scale_factor = 0.005; // Decrease or increase speed of mouse wheel (0.04 = decrease) - if (event->modifiers() & Qt::ControlModifier) { - if (index != -1) { - delta = event->delta() * scale_factor; // Read and scale the scroll value - if (delta > 0 && (temp_index > -1)) temp_index = temp_index - abs(delta); - if (delta < 0 && (temp_index < count())) temp_index = temp_index + abs(delta); + // Only intercept if Ctrl is held down + if (event->modifiers() & Qt::ControlModifier) { + int index = currentIndex(); + if (index != -1) { + // angleDelta().y() is usually 120 per click. + // Dividing by 120 gives you exactly +1 (scroll up) or -1 (scroll down) + int steps = event->angleDelta().y() / 120; - index = int (temp_index); - qDebug() << "index" << index << "temp_index" << temp_index << " " << event->delta() << delta; + if (steps != 0) { + int newIndex = index - steps; - if (index >= 0 && index < count()) - setCurrentIndex(index); - - // qDebug() << currentIndex(); + if (newIndex >= 0 && newIndex < count()) + setCurrentIndex(newIndex); } } + event->accept(); // Mark event handled so parent widgets don't process it + } else { + // Allow the default QTabWidget wheel behavior to process if Ctrl isn't held + QTabWidget::wheelEvent(event); + } } }; #endif