diff options
author | Martin Jones <martin.jones@nokia.com> | 2011-02-25 03:07:04 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2011-02-25 03:26:18 (GMT) |
commit | eeea1dd085d4712ce78166bdf8769e4270e2d831 (patch) | |
tree | dfca5db9f306b400ed7a25a210a453e8dee91a72 /src/declarative/graphicsitems/qdeclarativelistview.cpp | |
parent | fbf73dec65df9c27a3a09ca9b436f5f8cb9f1b0e (diff) | |
download | Qt-eeea1dd085d4712ce78166bdf8769e4270e2d831.zip Qt-eeea1dd085d4712ce78166bdf8769e4270e2d831.tar.gz Qt-eeea1dd085d4712ce78166bdf8769e4270e2d831.tar.bz2 |
Ensure layout is updated when section property changes.
When the section property changed the sections were recalculated,
but the items were not relayouted.
Also avoid 'Unable to assign undefined value' warning by setting
section item parent before component is completed.
Change-Id: I7bd8eb369877a6faf72b32b80b45a68366c95772
Task-number: QTBUG-17759
Reviewed-by: Michael Brasser
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativelistview.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativelistview.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 338cb58..431e311 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -942,7 +942,7 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem) } else { QDeclarativeContext *context = new QDeclarativeContext(qmlContext(q)); context->setContextProperty(QLatin1String("section"), listItem->attached->m_section); - QObject *nobj = sectionCriteria->delegate()->create(context); + QObject *nobj = sectionCriteria->delegate()->beginCreate(context); if (nobj) { QDeclarative_setParent_noEvent(context, nobj); listItem->section = qobject_cast<QDeclarativeItem *>(nobj); @@ -956,6 +956,7 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem) } else { delete context; } + sectionCriteria->delegate()->completeCreate(); } listItem->setPosition(pos); } else { @@ -2797,6 +2798,8 @@ void QDeclarativeListView::updateSections() roles << d->sectionCriteria->property().toUtf8(); d->model->setWatchedRoles(roles); d->updateSections(); + if (d->itemCount) + d->layout(); } } |