aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickoverlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates2/qquickoverlay.cpp')
-rw-r--r--src/quicktemplates2/qquickoverlay.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp
index 1829f9a30e..62abaae005 100644
--- a/src/quicktemplates2/qquickoverlay.cpp
+++ b/src/quicktemplates2/qquickoverlay.cpp
@@ -498,6 +498,13 @@ bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event)
case QEvent::HoverEnter:
case QEvent::HoverMove:
case QEvent::HoverLeave:
+ // If the control item has already been hovered, allow the hover leave event
+ // to be processed by the same item for resetting its internal hovered state
+ // instead of filtering it here.
+ if (auto *control = qobject_cast<QQuickControl *>(item)) {
+ if (control->isHovered() && event->type() == QEvent::HoverLeave)
+ return false;
+ }
handled = d->handleHoverEvent(item, static_cast<QHoverEvent *>(event), popup);
break;