aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquicktumbler.cpp
diff options
context:
space:
mode:
authorNikita Krupenko <krnekit@gmail.com>2016-05-08 20:22:01 +0300
committerNikita Krupenko <krnekit@gmail.com>2016-05-09 13:31:55 +0000
commit4dc0c0d4fa4e886650fb72161448bfb1f621b53b (patch)
treede516233a6abc9064cda43a95632d1606f117a8c /src/quicktemplates2/qquicktumbler.cpp
parent43b02ebb9687917082538f26ba321dc9c615d2fd (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.cpp10
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();
}
}