diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-06-30 09:08:35 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-06-30 09:08:35 +0200 |
commit | 5112821a37ab749f758e354e84703df2d09d5471 (patch) | |
tree | 8f19ba6e7661109675b5e1e9b0ddae94b4c96d4f /src/quick/items/qquicklistview.cpp | |
parent | 5d2ea1d5e9d6e29a16d0e9333cfc2dc8e7c5b677 (diff) | |
parent | a3f686cf7cc14ff481b972b1170a7ff76d0e0fd0 (diff) |
Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
.qmake.conf
src/qml/qml/qqmlengine.cpp
src/quick/items/qquickitemsmodule.cpp
tools/qml/main.cpp
Change-Id: Ida8daf6b4d7e675385f2f5514c446e52dedaf136
Diffstat (limited to 'src/quick/items/qquicklistview.cpp')
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index c14419dbee..a2920f8bad 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -1157,9 +1157,11 @@ void QQuickListViewPrivate::updateSections() if (visibleIndex > 0) prevSection = sectionAt(visibleIndex-1); QQuickListViewAttached *prevAtt = 0; + int prevIdx = -1; int idx = -1; for (int i = 0; i < visibleItems.count(); ++i) { - QQuickListViewAttached *attached = static_cast<QQuickListViewAttached*>(visibleItems.at(i)->attached); + FxViewItem *item = visibleItems.at(i); + QQuickListViewAttached *attached = static_cast<QQuickListViewAttached*>(item->attached); attached->setPrevSection(prevSection); if (visibleItems.at(i)->index != -1) { QString propValue = model->stringValue(visibleItems.at(i)->index, sectionCriteria->property()); @@ -1168,9 +1170,10 @@ void QQuickListViewPrivate::updateSections() } updateInlineSection(static_cast<FxListItemSG*>(visibleItems.at(i))); if (prevAtt) - prevAtt->setNextSection(attached->section()); + prevAtt->setNextSection(sectionAt(prevIdx+1)); prevSection = attached->section(); prevAtt = attached; + prevIdx = item->index; } if (prevAtt) { if (idx > 0 && idx < model->count()-1) @@ -3088,6 +3091,18 @@ bool QQuickListViewPrivate::applyInsertionChange(const QQmlChangeSet::Change &ch : visibleItems.last()->endPosition()+spacing; } + // Update the indexes of the following visible items. + for (int i = 0; i < visibleItems.count(); ++i) { + FxViewItem *item = visibleItems.at(i); + if (item->index != -1 && item->index >= modelIndex) { + item->index += count; + if (change.isMove()) + item->transitionNextReposition(transitioner, QQuickItemViewTransitioner::MoveTransition, false); + else + item->transitionNextReposition(transitioner, QQuickItemViewTransitioner::AddTransition, false); + } + } + int prevVisibleCount = visibleItems.count(); if (insertResult->visiblePos.isValid() && pos < insertResult->visiblePos) { // Insert items before the visible item. @@ -3153,17 +3168,6 @@ bool QQuickListViewPrivate::applyInsertionChange(const QQmlChangeSet::Change &ch } } - for (; index < visibleItems.count(); ++index) { - FxViewItem *item = visibleItems.at(index); - if (item->index != -1) { - item->index += count; - if (change.isMove()) - item->transitionNextReposition(transitioner, QQuickItemViewTransitioner::MoveTransition, false); - else - item->transitionNextReposition(transitioner, QQuickItemViewTransitioner::AddTransition, false); - } - } - updateVisibleIndex(); return visibleItems.count() > prevVisibleCount; |