From b74a7be07fa9c0c103d9fea6063760be01676391 Mon Sep 17 00:00:00 2001 From: Dilek Akcay Date: Thu, 3 Jul 2025 12:31:24 +0200 Subject: SearchField: Add hover event handling for the indicators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/quicktemplates/qquicksearchfield.cpp | 31 +++++++++++++++++++++++++++++++ src/quicktemplates/qquicksearchfield_p.h | 3 +++ 2 files changed, 34 insertions(+) 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; -- cgit v1.2.3