diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index 9de77ee9..37da504c 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -30,8 +30,7 @@ std::vector QtCodeArea::s_annotationColors; -MouseWheelOverScrollbarFilter::MouseWheelOverScrollbarFilter(QObject* parent) - : QObject(parent) +MouseWheelOverScrollbarFilter::MouseWheelOverScrollbarFilter() { } @@ -146,7 +145,7 @@ QtCodeArea::QtCodeArea( this->setMouseTracking(true); // MouseWheelOverScrollbarFilter is deleted by parent. - horizontalScrollBar()->installEventFilter(new MouseWheelOverScrollbarFilter(this)); + horizontalScrollBar()->installEventFilter(new MouseWheelOverScrollbarFilter()); m_scrollSpeedChangeListener.setScrollBar(horizontalScrollBar()); createActions(); @@ -586,6 +585,19 @@ void QtCodeArea::mouseMoveEvent(QMouseEvent* event) } } +void QtCodeArea::wheelEvent(QWheelEvent *event) +{ + if ((event->angleDelta().x() != 0 && horizontalScrollBar()->minimum() != horizontalScrollBar()->maximum()) || + (event->angleDelta().y() != 0 && verticalScrollBar()->minimum() != verticalScrollBar()->maximum())) + { + QPlainTextEdit::wheelEvent(event); + } + else + { + event->ignore(); + } +} + void QtCodeArea::contextMenuEvent(QContextMenuEvent* event) { if (m_setIDECursorPositionAction != nullptr) diff --git a/src/lib_gui/qt/element/QtCodeArea.h b/src/lib_gui/qt/element/QtCodeArea.h index 24ad08e6..5b9a36bc 100644 --- a/src/lib_gui/qt/element/QtCodeArea.h +++ b/src/lib_gui/qt/element/QtCodeArea.h @@ -21,18 +21,20 @@ class QWidget; class TokenLocation; class TokenLocationFile; + class MouseWheelOverScrollbarFilter : public QObject { Q_OBJECT public: - MouseWheelOverScrollbarFilter(QObject* parent); + MouseWheelOverScrollbarFilter(); protected: bool eventFilter(QObject* obj, QEvent* event); }; + class QtCodeArea : public QPlainTextEdit { @@ -102,6 +104,7 @@ protected: virtual void mouseReleaseEvent(QMouseEvent* event) Q_DECL_OVERRIDE; virtual void mousePressEvent(QMouseEvent* event) Q_DECL_OVERRIDE; virtual void mouseMoveEvent(QMouseEvent* event) Q_DECL_OVERRIDE; + virtual void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; virtual void contextMenuEvent(QContextMenuEvent* event) Q_DECL_OVERRIDE;