diff --git a/app/widget/timebased/timebased.cpp b/app/widget/timebased/timebased.cpp index 6d09dfe8b..15a8acb7d 100644 --- a/app/widget/timebased/timebased.cpp +++ b/app/widget/timebased/timebased.cpp @@ -45,6 +45,8 @@ TimeBasedWidget::TimeBasedWidget(bool ruler_text_visible, bool ruler_cache_statu scrollbar_ = new ResizableScrollBar(Qt::Horizontal, this); connect(scrollbar_, &ResizableScrollBar::RequestScale, this, &TimeBasedWidget::ScrollBarResized); + + PassWheelEventsToScrollBar(ruler_); } void TimeBasedWidget::SetScaleAndCenterOnPlayhead(const double &scale) @@ -237,6 +239,12 @@ void TimeBasedWidget::ConnectTimelineView(TimelineViewBase *base) timeline_views_.append(base); } +void TimeBasedWidget::PassWheelEventsToScrollBar(QObject *object) +{ + wheel_passthrough_objects_.append(object); + object->installEventFilter(this); +} + void TimeBasedWidget::SetTimestamp(int64_t timestamp) { ruler_->SetTime(timestamp); @@ -570,4 +578,13 @@ void TimeBasedWidget::MarkerAddCommand::undo_internal() marker_list_->RemoveMarker(added_marker_); } +bool TimeBasedWidget::eventFilter(QObject *object, QEvent *event) +{ + if (wheel_passthrough_objects_.contains(object) && event->type() == QEvent::Wheel) { + QCoreApplication::sendEvent(scrollbar(), event); + } + + return false; +} + } diff --git a/app/widget/timebased/timebased.h b/app/widget/timebased/timebased.h index 2689feba4..49e3b7125 100644 --- a/app/widget/timebased/timebased.h +++ b/app/widget/timebased/timebased.h @@ -54,6 +54,8 @@ public: TimeRuler* ruler() const; + virtual bool eventFilter(QObject* object, QEvent* event) override; + public slots: void SetTimestamp(int64_t timestamp); @@ -121,6 +123,8 @@ protected: void ConnectTimelineView(TimelineViewBase* base); + void PassWheelEventsToScrollBar(QObject* object); + protected slots: /** * @brief Slot to center the horizontal scroll bar on the playhead's current position @@ -199,6 +203,8 @@ private: bool auto_set_timebase_; + QVector wheel_passthrough_objects_; + private slots: void UpdateMaximumScroll(); diff --git a/app/widget/viewer/viewer.cpp b/app/widget/viewer/viewer.cpp index 00757f925..bf746dcd9 100644 --- a/app/widget/viewer/viewer.cpp +++ b/app/widget/viewer/viewer.cpp @@ -82,6 +82,7 @@ ViewerWidget::ViewerWidget(QWidget *parent) : // Create waveform view when audio is connected and video isn't waveform_view_ = new AudioWaveformView(); + PassWheelEventsToScrollBar(waveform_view_); stack_->addWidget(waveform_view_); // Create time ruler