diff --git a/libkwineffects/kwineffectquickview.cpp b/libkwineffects/kwineffectquickview.cpp --- a/libkwineffects/kwineffectquickview.cpp +++ b/libkwineffects/kwineffectquickview.cpp @@ -201,12 +201,39 @@ if (!d->m_visible) { return; } - QMouseEvent *me = static_cast(e); - const QPoint widgetPos = d->m_view->mapFromGlobal(me->pos()); - - QMouseEvent cloneEvent(me->type(), widgetPos, me->pos(), me->button(), me->buttons(), me->modifiers()); - QCoreApplication::sendEvent(d->m_view, &cloneEvent); - e->setAccepted(cloneEvent.isAccepted()); + switch (e->type()) { + case QEvent::MouseMove: + Q_FALLTHROUGH(); + case QEvent::MouseButtonPress: + Q_FALLTHROUGH(); + case QEvent::MouseButtonRelease: + Q_FALLTHROUGH(); + case QEvent::MouseButtonDblClick: + { + QMouseEvent *me = static_cast(e); + const QPoint widgetPos = d->m_view->mapFromGlobal(me->pos()); + QMouseEvent cloneEvent(me->type(), widgetPos, me->pos(), me->button(), me->buttons(), me->modifiers()); + QCoreApplication::sendEvent(d->m_view, &cloneEvent); + e->setAccepted(cloneEvent.isAccepted()); + return; + } + case QEvent::HoverEnter: + Q_FALLTHROUGH(); + case QEvent::HoverLeave: + Q_FALLTHROUGH(); + case QEvent::HoverMove: + { + QHoverEvent *he = static_cast(e); + const QPointF widgetPos = d->m_view->mapFromGlobal(he->pos()); + const QPointF oldWidgetPos = d->m_view->mapFromGlobal(he->oldPos()); + QHoverEvent cloneEvent(he->type(), widgetPos, oldWidgetPos, he->modifiers()); + QCoreApplication::sendEvent(d->m_view, &cloneEvent); + e->setAccepted(cloneEvent.isAccepted()); + return; + } + default: + return; + } } void EffectQuickView::forwardKeyEvent(QKeyEvent *keyEvent)