aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickrangeslider.cpp
diff options
context:
space:
mode:
authorZhang Hao <zhanghao@uniontech.com>2021-07-27 09:00:56 +0800
committerMitch Curtis <mitch.curtis@qt.io>2021-08-13 10:12:17 +0200
commit603c91f330b40ceab20272db16f3dbffa4edd0ec (patch)
tree709d0580a85c40defd4e730bdf57604bd1d053f4 /src/quicktemplates2/qquickrangeslider.cpp
parent8392fa84ba66b6018e5d439590496458845559be (diff)
RangeSlider: fix both handles being hovered
When both handles overlap, only the handle with the higher Z value should be hovered. Pick-to: 6.2 6.1 5.15 Fixes: QTBUG-94558 Done-with: Mitch Curtis <mitch.curtis@qt.io> Change-Id: I6565e199ea77f3fae7a0d2dc84b36fa244bc7260 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickrangeslider.cpp')
-rw-r--r--src/quicktemplates2/qquickrangeslider.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickrangeslider.cpp b/src/quicktemplates2/qquickrangeslider.cpp
index 2348e64298..3f596f6b2e 100644
--- a/src/quicktemplates2/qquickrangeslider.cpp
+++ b/src/quicktemplates2/qquickrangeslider.cpp
@@ -594,8 +594,19 @@ void QQuickRangeSliderPrivate::updateHover(const QPointF &pos)
Q_Q(QQuickRangeSlider);
QQuickItem *firstHandle = first->handle();
QQuickItem *secondHandle = second->handle();
- first->setHovered(firstHandle && firstHandle->isEnabled() && firstHandle->contains(q->mapToItem(firstHandle, pos)));
- second->setHovered(secondHandle && secondHandle->isEnabled() && secondHandle->contains(q->mapToItem(secondHandle, pos)));
+ bool firstHandleHovered = firstHandle && firstHandle->isEnabled()
+ && firstHandle->contains(q->mapToItem(firstHandle, pos));
+ bool secondHandleHovered = secondHandle && secondHandle->isEnabled()
+ && secondHandle->contains(q->mapToItem(secondHandle, pos));
+
+ if (firstHandleHovered && secondHandleHovered) {
+ // Only hover the handle with the higher Z value.
+ const bool firstHandleHasHigherZ = firstHandle->z() > secondHandle->z();
+ firstHandleHovered = firstHandleHasHigherZ;
+ secondHandleHovered = !firstHandleHasHigherZ;
+ }
+ first->setHovered(firstHandleHovered);
+ second->setHovered(secondHandleHovered);
}
void QQuickRangeSliderPrivate::itemImplicitWidthChanged(QQuickItem *item)