diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-10-15 09:34:11 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-10-17 09:53:25 +0000 |
commit | ed7521d27cbba69196870005c9d97129a6d7b781 (patch) | |
tree | 725f6b3c253a51873547af384eba6a4246527af7 /src | |
parent | b32cd6480c332ca14e472d7e164914c7d3f7aaa5 (diff) |
Clear hover when moved outside while pressing
As noticed in QTBUG-56269, QEvent::HoverLeave is not sent while there
is an active mouse grabber item. Therefore we must hit test move events
to figure out if the control is still effectively hovered.
Task-number: QTBUG-56556
Change-Id: I8a5e3dbd77375aace7fc5594e4315288304d852f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 9 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol_p.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 307227a6..f18483e7 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -1132,6 +1132,13 @@ void QQuickControl::hoverEnterEvent(QHoverEvent *event) event->setAccepted(d->hoverEnabled); } +void QQuickControl::hoverMoveEvent(QHoverEvent *event) +{ + Q_D(QQuickControl); + setHovered(d->hoverEnabled && contains(event->pos())); + event->setAccepted(d->hoverEnabled); +} + void QQuickControl::hoverLeaveEvent(QHoverEvent *event) { Q_D(QQuickControl); @@ -1150,6 +1157,8 @@ void QQuickControl::mousePressEvent(QMouseEvent *event) void QQuickControl::mouseMoveEvent(QMouseEvent *event) { + Q_D(QQuickControl); + setHovered(d->hoverEnabled && contains(event->pos())); event->accept(); } diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index 9027743a..d9827017 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -176,6 +176,7 @@ protected: void focusInEvent(QFocusEvent *event) override; void focusOutEvent(QFocusEvent *event) override; void hoverEnterEvent(QHoverEvent *event) override; + void hoverMoveEvent(QHoverEvent *event) override; void hoverLeaveEvent(QHoverEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; |