diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-06-26 13:13:11 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-26 08:08:33 +0200 |
commit | 3bb4880d63e0ebc972d500d3c7538127cd709a5d (patch) | |
tree | 802038e59bba2d265a57ff18739278a8f64b529b /tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | |
parent | 4089c2bbc51717a642f17c76c17c9ca73e180f00 (diff) |
Fix section delegates not updating when changed.
Delete all allocated section items before doing an update when the
section delegate is changed.
Task-number: QTBUG-24899
Change-Id: I09dc7a1c602a49ad7bb37512a7e5116392259457
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto/quick/qquicklistview/tst_qquicklistview.cpp')
-rw-r--r-- | tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index c6a72306f9..848ffb10ff 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -146,6 +146,7 @@ private slots: void sectionsDragOutsideBounds(); void sectionsDelegate_headerVisibility(); void sectionPropertyChange(); + void sectionDelegateChange(); void cacheBuffer(); void positionViewAtIndex(); void resetModel(); @@ -2431,6 +2432,46 @@ void tst_QQuickListView::sectionPropertyChange() delete canvas; } +void tst_QQuickListView::sectionDelegateChange() +{ + QQuickView *canvas = createView(); + + canvas->setSource(testFileUrl("sectiondelegatechange.qml")); + canvas->show(); + qApp->processEvents(); + + QQuickListView *listview = qobject_cast<QQuickListView *>(canvas->rootObject()); + QVERIFY(listview != 0); + + QQuickItem *contentItem = listview->contentItem(); + QVERIFY(contentItem != 0); + + QQUICK_VERIFY_POLISH(listview); + + QVERIFY(findItems<QQuickItem>(contentItem, "section1").count() > 0); + QCOMPARE(findItems<QQuickItem>(contentItem, "section2").count(), 0); + + for (int i = 0; i < 3; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "item", i); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), qreal(25. + i*50.)); + } + + QMetaObject::invokeMethod(canvas->rootObject(), "switchDelegates"); + QQUICK_VERIFY_POLISH(listview); + + QCOMPARE(findItems<QQuickItem>(contentItem, "section1").count(), 0); + QVERIFY(findItems<QQuickItem>(contentItem, "section2").count() > 0); + + for (int i = 0; i < 3; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "item", i); + QVERIFY(item); + QTRY_COMPARE(item->y(), qreal(50. + i*75.)); + } + + delete canvas; +} + void tst_QQuickListView::currentIndex_delayedItemCreation() { QFETCH(bool, setCurrentToZero); |