From a03b6fec6b3551a6302aa1f8d7f3b0044cf27c4b Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Wed, 10 Aug 2016 12:02:45 +0200 Subject: Dial: fix stepSize handling As was done in for Slider in c4c803ce4: The correct formula for calculating the "range" or "span" is to-from, not from+(to-from), which is used in the formula for calculating value. Task-number: QTBUG-55228 Change-Id: Ic5463ef5ac5566efc5996aadd9ae39ec108d778f Reviewed-by: J-P Nurmi --- src/quicktemplates2/qquickdial.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/quicktemplates2/qquickdial.cpp') diff --git a/src/quicktemplates2/qquickdial.cpp b/src/quicktemplates2/qquickdial.cpp index 3932fd05..de220853 100644 --- a/src/quicktemplates2/qquickdial.cpp +++ b/src/quicktemplates2/qquickdial.cpp @@ -126,9 +126,15 @@ qreal QQuickDialPrivate::valueAt(qreal position) const qreal QQuickDialPrivate::snapPosition(qreal position) const { - if (qFuzzyIsNull(stepSize)) + const qreal range = to - from; + if (qFuzzyIsNull(range)) return position; - return qRound(position / stepSize) * stepSize; + + const qreal effectiveStep = stepSize / range; + if (qFuzzyIsNull(effectiveStep)) + return position; + + return qRound(position / effectiveStep) * effectiveStep; } qreal QQuickDialPrivate::positionAt(const QPoint &point) const -- cgit v1.2.3