diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-08 12:59:45 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-08 17:15:46 +0000 |
commit | e75bbe782def5cbcc8e7f69640c7cdb107164f4a (patch) | |
tree | ffea0b9f96157dbb5660d076843e5b42b9068348 /src/templates | |
parent | a2aff9c3c8800d265757d5171cb4f39c81328edd (diff) |
Sliders: fix snapping on release
If the value changes when snapped on release, the position is updated
accordingly. However, if the value doesn't change, the position must
be updated manually or the handle doesn't snap as it should.
Change-Id: I3648e08c2f897d73c84c6d91510795e4aede41d7
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/templates')
-rw-r--r-- | src/templates/qquickrangeslider.cpp | 6 | ||||
-rw-r--r-- | src/templates/qquickslider.cpp | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/templates/qquickrangeslider.cpp b/src/templates/qquickrangeslider.cpp index 5fae3ae5..13f5e338 100644 --- a/src/templates/qquickrangeslider.cpp +++ b/src/templates/qquickrangeslider.cpp @@ -808,7 +808,11 @@ void QQuickRangeSlider::mouseReleaseEvent(QMouseEvent *event) qreal pos = positionAt(this, pressedNode->handle(), event->pos()); if (d->snapMode != NoSnap) pos = snapPosition(this, pos); - pressedNode->setValue(valueAt(this, pos)); + qreal val = valueAt(this, pos); + if (!qFuzzyCompare(val, pressedNode->value())) + pressedNode->setValue(val); + else if (d->snapMode != NoSnap) + QQuickRangeSliderNodePrivate::get(pressedNode)->setPosition(pos); setKeepMouseGrab(false); pressedNode->setPressed(false); } diff --git a/src/templates/qquickslider.cpp b/src/templates/qquickslider.cpp index b197b4a1..fac8fb50 100644 --- a/src/templates/qquickslider.cpp +++ b/src/templates/qquickslider.cpp @@ -537,7 +537,11 @@ void QQuickSlider::mouseReleaseEvent(QMouseEvent *event) qreal pos = d->positionAt(event->pos()); if (d->snapMode != NoSnap) pos = d->snapPosition(pos); - setValue(d->valueAt(pos)); + qreal val = d->valueAt(pos); + if (!qFuzzyCompare(val, d->value)) + setValue(val); + else if (d->snapMode != NoSnap) + d->setPosition(pos); setKeepMouseGrab(false); } setPressed(false); |