aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitemview.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-06-29 11:57:02 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-04 03:02:49 +0200
commitbaee77ef475056e045e2fa41f448a2703e2def07 (patch)
tree5ec91f0ed4d389ea1af0ef437a7fc3c7976fdc83 /src/quick/items/qquickitemview.cpp
parent9bf96613c1be7d4df7132a9c3c9ac1a8740f698f (diff)
Section headers ignore list delegate size changes when "colliding"
Make section header updates part of the layout process. Task-number: QTBUG-23298 Change-Id: I4586bc58bc195fcc47f6db79346727eb6e3d3845 Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitemview.cpp')
-rw-r--r--src/quick/items/qquickitemview.cpp27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index cc2a35202e..34a8cf5284 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -307,7 +307,7 @@ void QQuickItemView::setModel(const QVariant &model)
connect(d->model, SIGNAL(initItem(int,QQuickItem*)), this, SLOT(initItem(int,QQuickItem*)));
connect(d->model, SIGNAL(destroyingItem(QQuickItem*)), this, SLOT(destroyingItem(QQuickItem*)));
if (isComponentComplete()) {
- updateSections();
+ d->updateSectionCriteria();
d->refill();
if ((d->currentIndex >= d->model->count() || d->currentIndex < 0) && !d->currentIndexCleared) {
setCurrentIndex(0);
@@ -324,9 +324,8 @@ void QQuickItemView::setModel(const QVariant &model)
d->updateViewport();
if (d->transitioner && d->transitioner->populateTransition) {
- d->forceLayout = true;
d->transitioner->setPopulateTransitionEnabled(true);
- polish();
+ d->forceLayoutPolish();
}
}
connect(d->model, SIGNAL(modelUpdated(QQuickChangeSet,bool)),
@@ -365,7 +364,7 @@ void QQuickItemView::setDelegate(QQmlComponent *delegate)
d->visibleItems.clear();
d->releaseItem(d->currentItem);
d->currentItem = 0;
- updateSections();
+ d->updateSectionCriteria();
d->refill();
d->moveReason = QQuickItemViewPrivate::SetIndex;
d->updateCurrent(d->currentIndex);
@@ -1135,9 +1134,7 @@ void QQuickItemView::destroyRemoved()
}
// Correct the positioning of the items
- d->updateSections();
- d->forceLayout = true;
- polish();
+ d->forceLayoutPolish();
}
void QQuickItemView::modelUpdated(const QQuickChangeSet &changeSet, bool reset)
@@ -1155,10 +1152,8 @@ void QQuickItemView::modelUpdated(const QQuickChangeSet &changeSet, bool reset)
}
d->moveReason = QQuickItemViewPrivate::Other;
emit countChanged();
- if (d->transitioner && d->transitioner->populateTransition) {
- d->forceLayout = true;
- polish();
- }
+ if (d->transitioner && d->transitioner->populateTransition)
+ d->forceLayoutPolish();
} else {
if (d->inLayout) {
d->bufferedChanges.prepare(d->currentIndex, d->itemCount);
@@ -1268,10 +1263,8 @@ void QQuickItemView::geometryChanged(const QRectF &newGeometry, const QRectF &ol
{
Q_D(QQuickItemView);
d->markExtentsDirty();
- if (isComponentComplete() && d->isValid()) {
- d->forceLayout = true;
- polish();
- }
+ if (isComponentComplete() && d->isValid())
+ d->forceLayoutPolish();
QQuickFlickable::geometryChanged(newGeometry, oldGeometry);
}
@@ -1384,7 +1377,7 @@ void QQuickItemView::componentComplete()
QQuickFlickable::componentComplete();
- updateSections();
+ d->updateSectionCriteria();
d->updateHeader();
d->updateFooter();
d->updateViewport();
@@ -1779,6 +1772,8 @@ void QQuickItemViewPrivate::layout()
visibleItems.at(i)->transitionNextReposition(transitioner, QQuickItemViewTransitioner::PopulateTransition, true);
}
}
+
+ updateSections();
layoutVisibleItems();
int lastIndexInView = findLastIndexInView();