diff options
author | Dilek Akcay <[email protected]> | 2025-07-03 12:31:24 +0200 |
---|---|---|
committer | Dilek Akcay <[email protected]> | 2025-07-08 13:56:26 +0000 |
commit | b74a7be07fa9c0c103d9fea6063760be01676391 (patch) | |
tree | a4aca0426a5e77a74d13c2f25400be40e5194ef4 | |
parent | 54687acb65547bcacb448eeb3bf4fa0602fd8a1a (diff) |
Implemented hover move and leave event handling for the clear and
search indicators. This allows dynamic background color changes
based on the hover state on different styles.
Pick-to: 6.10
Change-Id: I7d5d843ae5177a0aa6bab2e1ef6b1774e4331107
Reviewed-by: Jan Arve Sæther <[email protected]>
-rw-r--r-- | src/quicktemplates/qquicksearchfield.cpp | 31 | ||||
-rw-r--r-- | src/quicktemplates/qquicksearchfield_p.h | 3 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/quicktemplates/qquicksearchfield.cpp b/src/quicktemplates/qquicksearchfield.cpp index cffb67f187..d2531f3f29 100644 --- a/src/quicktemplates/qquicksearchfield.cpp +++ b/src/quicktemplates/qquicksearchfield.cpp @@ -929,6 +929,37 @@ void QQuickSearchField::focusOutEvent(QFocusEvent *event) d->hidePopup(); } +void QQuickSearchField::hoverEnterEvent(QHoverEvent *event) +{ + Q_D(QQuickSearchField); + QQuickControl::hoverEnterEvent(event); + QQuickItem *si = d->searchIndicator->indicator(); + QQuickItem *ci = d->clearIndicator->indicator(); + d->searchIndicator->setHovered(si && si->isEnabled() && si->contains(mapToItem(si, event->position()))); + d->clearIndicator->setHovered(ci && ci->isEnabled() && ci->contains(mapToItem(ci, event->position()))); + event->ignore(); +} + +void QQuickSearchField::hoverMoveEvent(QHoverEvent *event) +{ + Q_D(QQuickSearchField); + QQuickControl::hoverMoveEvent(event); + QQuickItem *si = d->searchIndicator->indicator(); + QQuickItem *ci = d->clearIndicator->indicator(); + d->searchIndicator->setHovered(si && si->isEnabled() && si->contains(mapToItem(si, event->position()))); + d->clearIndicator->setHovered(ci && ci->isEnabled() && ci->contains(mapToItem(ci, event->position()))); + event->ignore(); +} + +void QQuickSearchField::hoverLeaveEvent(QHoverEvent *event) +{ + Q_D(QQuickSearchField); + QQuickControl::hoverLeaveEvent(event); + d->searchIndicator->setHovered(false); + d->clearIndicator->setHovered(false); + event->ignore(); +} + void QQuickSearchField::keyPressEvent(QKeyEvent *event) { Q_D(QQuickSearchField); diff --git a/src/quicktemplates/qquicksearchfield_p.h b/src/quicktemplates/qquicksearchfield_p.h index 89fcd6dda3..44c1c540a3 100644 --- a/src/quicktemplates/qquicksearchfield_p.h +++ b/src/quicktemplates/qquicksearchfield_p.h @@ -99,6 +99,9 @@ protected: bool eventFilter(QObject *object, QEvent *event) override; 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 keyPressEvent(QKeyEvent *event) override; void classBegin() override; void componentComplete() override; |