diff options
author | Mitch Curtis <mitch.curtis@qt.io> | 2016-08-10 12:02:45 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-10 10:48:49 +0000 |
commit | a03b6fec6b3551a6302aa1f8d7f3b0044cf27c4b (patch) | |
tree | 56dd26e5e334b7ab393df6fd585118485e56f645 /src/quicktemplates2/qquickdial.cpp | |
parent | 37b714d3e09f839553e9d4a151b44b647e39c548 (diff) |
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 <jpnurmi@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickdial.cpp')
-rw-r--r-- | src/quicktemplates2/qquickdial.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
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 |