From b1f41dd87ecb224c921a86b2eef4b2e65d3328e5 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 22 May 2020 10:42:38 +0200 Subject: [PATCH] Gui: [skip ci] wheel event filter for combo boxes --- src/Gui/Application.cpp | 6 ++++++ src/Gui/GuiApplication.cpp | 16 ++++++++++++++++ src/Gui/GuiApplication.h | 9 +++++++++ 3 files changed, 31 insertions(+) diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 6f20a208e6..e98facc16a 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -1976,6 +1976,12 @@ void Application::runApplication(void) if (size >= 16) // must not be lower than this mw.setIconSize(QSize(size,size)); + // filter wheel events for combo boxes + if (hGrp->GetBool("ComboBoxWheelEventFilter", false)) { + WheelEventFilter* filter = new WheelEventFilter(&mainApp); + mainApp.installEventFilter(filter); + } + #if defined(HAVE_QT5_OPENGL) { QWindow window; diff --git a/src/Gui/GuiApplication.cpp b/src/Gui/GuiApplication.cpp index 1dbe8992d3..9a49556195 100644 --- a/src/Gui/GuiApplication.cpp +++ b/src/Gui/GuiApplication.cpp @@ -27,6 +27,7 @@ # include # include # include +# include # include # include # include @@ -304,4 +305,19 @@ void GUISingleApplication::processMessages() Q_EMIT messageReceived(msg); } +// ---------------------------------------------------------------------------- + +WheelEventFilter::WheelEventFilter(QObject* parent) + : QObject(parent) +{ +} + +bool WheelEventFilter::eventFilter(QObject* obj, QEvent* ev) +{ + if (qobject_cast(obj) && ev->type() == QEvent::Wheel) + return true; + return false; +} + + #include "moc_GuiApplication.cpp" diff --git a/src/Gui/GuiApplication.h b/src/Gui/GuiApplication.h index de026baff4..7208f3926c 100644 --- a/src/Gui/GuiApplication.h +++ b/src/Gui/GuiApplication.h @@ -83,6 +83,15 @@ private: QScopedPointer d_ptr; }; +class WheelEventFilter : public QObject +{ + Q_OBJECT + +public: + WheelEventFilter(QObject* parent); + bool eventFilter(QObject* obj, QEvent* ev); +}; + } #endif // GUI_APPLICATION_H