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 /tests/auto/quick/qquicklistview | |
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 'tests/auto/quick/qquicklistview')
-rw-r--r-- | tests/auto/quick/qquicklistview/data/listview-sections_delegate.qml | 3 | ||||
-rw-r--r-- | tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 62 |
2 files changed, 65 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicklistview/data/listview-sections_delegate.qml b/tests/auto/quick/qquicklistview/data/listview-sections_delegate.qml index 7245025bac..11da286f4d 100644 --- a/tests/auto/quick/qquicklistview/data/listview-sections_delegate.qml +++ b/tests/auto/quick/qquicklistview/data/listview-sections_delegate.qml @@ -12,6 +12,9 @@ Rectangle { Item { id: wrapper objectName: "wrapper" + property string section: ListView.section + property string nextSection: ListView.nextSection + property string prevSection: ListView.previousSection height: 20; width: 240 Rectangle { diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index b25fc5402b..6377650696 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -133,6 +133,7 @@ private slots: void sectionsDelegate_headerVisibility(); void sectionPropertyChange(); void sectionDelegateChange(); + void sectionsItemInsertion(); void cacheBuffer(); void positionViewAtBeginningEnd(); void positionViewAtIndex(); @@ -2544,6 +2545,67 @@ void tst_QQuickListView::sectionDelegateChange() delete window; } +// QTBUG-43873 +void tst_QQuickListView::sectionsItemInsertion() +{ + QQuickView *window = createView(); + + QaimModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), QString::number(i/5)); + + QQmlContext *ctxt = window->rootContext(); + ctxt->setContextProperty("testModel", &model); + + window->setSource(testFileUrl("listview-sections_delegate.qml")); + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window)); + + QQuickListView *listview = findItem<QQuickListView>(window->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + QQuickItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + QTRY_COMPARE(QQuickItemPrivate::get(listview)->polishScheduled, false); + + for (int i = 0; i < 3; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "sect_" + QString::number(i)); + QVERIFY(item); + QTRY_COMPARE(item->y(), qreal(i*20*6)); + } + + QQuickItem *topItem = findVisibleChild(contentItem, "sect_0"); // section header + QVERIFY(topItem); + QCOMPARE(topItem->y(), 0.); + + // Insert a full screen of items at the beginning. + for (int i = 0; i < 10; i++) + model.insertItem(i, "Item" + QString::number(i), QLatin1String("A")); + + QTRY_COMPARE(QQuickItemPrivate::get(listview)->polishScheduled, false); + + int itemCount = findItems<QQuickItem>(contentItem, "wrapper").count(); + QVERIFY(itemCount > 10); + + // Verify that the new items are postioned correctly, and have the correct attached section properties + for (int i = 0; i < 10 && i < itemCount; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i); + QVERIFY(item); + QTRY_COMPARE(item->y(), 20+i*20.0); + QCOMPARE(item->property("section").toString(), QLatin1String("A")); + QCOMPARE(item->property("nextSection").toString(), i < 9 ? QLatin1String("A") : QLatin1String("0")); + QCOMPARE(item->property("prevSection").toString(), i > 0 ? QLatin1String("A") : QLatin1String("")); + } + // Verify that the exiting items are postioned correctly, and have the correct attached section properties + for (int i = 10; i < 15 && i < itemCount; ++i) { + QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i); + QVERIFY(item); + QTRY_COMPARE(item->y(), 40+i*20.0); + QCOMPARE(item->property("section").toString(), QLatin1String("0")); + QCOMPARE(item->property("nextSection").toString(), i < 14 ? QLatin1String("0") : QLatin1String("1")); + QCOMPARE(item->property("prevSection").toString(), i > 10 ? QLatin1String("0") : QLatin1String("A")); + } +} + void tst_QQuickListView::currentIndex_delayedItemCreation() { QFETCH(bool, setCurrentToZero); |