From 909e3ed4386f0e87c4e4e3696048cfb957218c4f Mon Sep 17 00:00:00 2001 From: Mike Walters Date: Thu, 2 Feb 2017 16:11:29 +0000 Subject: [PATCH] Stop eventFilter stealing mouse events from scrollbars Switch from eventFilter to viewportEvent and call parent viewportEvent before processing our own events --- plotview.cpp | 5 ++--- plotview.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/plotview.cpp b/plotview.cpp index d575480..172acca 100644 --- a/plotview.cpp +++ b/plotview.cpp @@ -48,7 +48,6 @@ PlotView::PlotView(InputSource *input) : cursors(this), viewRange({0, 0}) addPlot(spectrogramPlot); - viewport()->installEventFilter(this); mainSampleSource->subscribe(this); } @@ -162,8 +161,8 @@ void PlotView::enableCursors(bool enabled) viewport()->update(); } -bool PlotView::eventFilter(QObject * obj, QEvent *event) -{ +bool PlotView::viewportEvent(QEvent *event) { + QAbstractScrollArea::viewportEvent(event); // Pass mouse events to individual plot objects if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseMove || diff --git a/plotview.h b/plotview.h index 4296da0..231939a 100644 --- a/plotview.h +++ b/plotview.h @@ -55,10 +55,10 @@ public slots: protected: void contextMenuEvent(QContextMenuEvent * event) override; - bool eventFilter(QObject * obj, QEvent *event) override; void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent * event); void scrollContentsBy(int dx, int dy); + bool viewportEvent(QEvent *event) override; private: Cursors cursors;