aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickscrollindicator.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-09-02 17:28:05 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-09-02 17:28:16 +0200
commitfba02cc8ae7fb71abb927a06a8e480f7909dc029 (patch)
treed32e2c1f0070ab49fc85cdc89b744f9925b4e614 /src/quicktemplates2/qquickscrollindicator.cpp
parentf6c3ecdb0646a4d83be5c07dd5369d0b0350260c (diff)
parent33904b63ce9971efc3763a0048a084ec3324dfc4 (diff)
Merge remote-tracking branch 'origin/5.7' into 5.8
Diffstat (limited to 'src/quicktemplates2/qquickscrollindicator.cpp')
-rw-r--r--src/quicktemplates2/qquickscrollindicator.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickscrollindicator.cpp b/src/quicktemplates2/qquickscrollindicator.cpp
index acb8dd46..351f3113 100644
--- a/src/quicktemplates2/qquickscrollindicator.cpp
+++ b/src/quicktemplates2/qquickscrollindicator.cpp
@@ -109,12 +109,17 @@ void QQuickScrollIndicatorPrivate::resizeContent()
if (!contentItem)
return;
+ // - negative overshoot (pos < 0): clamp the pos to 0, and deduct the overshoot from the size
+ // - positive overshoot (pos + size > 1): clamp the size to 1-pos
+ const qreal clampedSize = qBound<qreal>(0, size + qMin<qreal>(0, position), 1.0 - position);
+ const qreal clampedPos = qBound<qreal>(0, position, 1.0 - clampedSize);
+
if (orientation == Qt::Horizontal) {
- contentItem->setPosition(QPointF(q->leftPadding() + position * q->availableWidth(), q->topPadding()));
- contentItem->setSize(QSizeF(q->availableWidth() * size, q->availableHeight()));
+ contentItem->setPosition(QPointF(q->leftPadding() + clampedPos * q->availableWidth(), q->topPadding()));
+ contentItem->setSize(QSizeF(q->availableWidth() * clampedSize, q->availableHeight()));
} else {
- contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + position * q->availableHeight()));
- contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * size));
+ contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + clampedPos * q->availableHeight()));
+ contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * clampedSize));
}
}