diff options
author | Zhang Hao <zhanghao@uniontech.com> | 2021-07-27 09:00:56 +0800 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@qt.io> | 2021-08-13 10:12:17 +0200 |
commit | 603c91f330b40ceab20272db16f3dbffa4edd0ec (patch) | |
tree | 709d0580a85c40defd4e730bdf57604bd1d053f4 /src/quicktemplates2/qquickrangeslider.cpp | |
parent | 8392fa84ba66b6018e5d439590496458845559be (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.cpp | 15 |
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) |