diff options
author | Nikita Krupenko <krnekit@gmail.com> | 2016-05-08 20:22:01 +0300 |
---|---|---|
committer | Nikita Krupenko <krnekit@gmail.com> | 2016-05-09 13:31:55 +0000 |
commit | 4dc0c0d4fa4e886650fb72161448bfb1f621b53b (patch) | |
tree | de516233a6abc9064cda43a95632d1606f117a8c /src/quicktemplates2/qquicktumbler.cpp | |
parent | 43b02ebb9687917082538f26ba321dc9c615d2fd (diff) |
Tumbler: calculate proper displacement when count <= visibleItemCount
Task-number: QTBUG-53120
Change-Id: I78035b2cf75b2bc18326b7f735be3f9c930d472b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquicktumbler.cpp')
-rw-r--r-- | src/quicktemplates2/qquicktumbler.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp index 546e699c..852803f0 100644 --- a/src/quicktemplates2/qquicktumbler.cpp +++ b/src/quicktemplates2/qquicktumbler.cpp @@ -403,7 +403,7 @@ public: QQuickTumblerAttachedPrivate(QQuickItem *delegateItem) : tumbler(nullptr), index(-1), - displacement(1) + displacement(0) { if (!delegateItem->parentItem()) { qWarning() << "Tumbler: attached properties must be accessed from within a delegate item that has a parent"; @@ -489,8 +489,10 @@ void QQuickTumblerAttachedPrivate::_q_calculateDisplacement() if (contentType == PathViewContentItem) { offset = tumbler->contentItem()->property("offset").toReal(); - displacement = count - index - offset; - int halfVisibleItems = tumbler->visibleItemCount() / 2 + 1; + displacement = count > 1 ? count - index - offset : 0; + // Don't add 1 if count <= visibleItemCount + const int visibleItems = tumbler->visibleItemCount(); + int halfVisibleItems = visibleItems / 2 + (visibleItems < count ? 1 : 0); if (displacement > halfVisibleItems) displacement -= count; else if (displacement < -halfVisibleItems) @@ -522,6 +524,8 @@ QQuickTumblerAttached::QQuickTumblerAttached(QQuickItem *delegateItem) : const char *contentItemSignal = contentType == PathViewContentItem ? SIGNAL(offsetChanged()) : SIGNAL(contentYChanged()); connect(d->tumbler->contentItem(), contentItemSignal, this, SLOT(_q_calculateDisplacement())); + + d->_q_calculateDisplacement(); } } |