diff --git a/src/libs/utils/guiutils.cpp b/src/libs/utils/guiutils.cpp index bfafff677f7..7789f83993b 100644 --- a/src/libs/utils/guiutils.cpp +++ b/src/libs/utils/guiutils.cpp @@ -14,11 +14,15 @@ class WheelEventFilter : public QObject { public: bool eventFilter(QObject *watched, QEvent *event) override { - auto widget = qobject_cast(watched); - return event->type() == QEvent::Wheel - && widget - && widget->focusPolicy() != Qt::WheelFocus - && !widget->hasFocus(); + if (event->type() == QEvent::Wheel) { + QWidget *widget = qobject_cast(watched); + if (widget && widget->focusPolicy() != Qt::WheelFocus && !widget->hasFocus()) { + QObject *parent = widget->parentWidget(); + if (parent) + return parent->event(event); + } + } + return QObject::eventFilter(watched, event); } }; @@ -28,7 +32,8 @@ void QTCREATOR_UTILS_EXPORT attachWheelBlocker(QWidget *widget) { static Internal::WheelEventFilter instance; widget->installEventFilter(&instance); - widget->setFocusPolicy(Qt::StrongFocus); + if (widget->focusPolicy() == Qt::WheelFocus) + widget->setFocusPolicy(Qt::StrongFocus); } } // namespace Utils