aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2011-12-08 17:52:35 +1000
committerQt by Nokia <qt-info@nokia.com>2011-12-12 05:40:30 +0100
commitb156b5d8c313f3b3711b1da6e06768473db3cf12 (patch)
treeaba1c52e8052b9fb61918e6458d74949bfc156e0 /tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
parent18ce33ecd994666d42e438c4aa62302c72465458 (diff)
Fix package items not being destroyed when a package is destroyed.
The views parent the delegate items to themselves on creation, before we delete the package we need to reparent them back to it or they'll persist indefinately. Change-Id: I01a36fadb2b0ff1035de46ec2b84a54d73c49bcf Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp')
-rw-r--r--tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp70
1 files changed, 69 insertions, 1 deletions
diff --git a/tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp b/tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
index af3af57436..1389a530e0 100644
--- a/tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
+++ b/tests/auto/qtquick2/qquickvisualdatamodel/tst_qquickvisualdatamodel.cpp
@@ -133,6 +133,7 @@ private slots:
void noDelegate();
void itemsDestroyed_data();
void itemsDestroyed();
+ void packagesDestroyed();
void qaimRowsMoved();
void qaimRowsMoved_data();
void remove_data();
@@ -174,7 +175,7 @@ private:
bool failed;
QDeclarativeEngine engine;
template<typename T>
- T *findItem(QQuickItem *parent, const QString &objectName, int index);
+ T *findItem(QQuickItem *parent, const QString &objectName, int index = -1);
};
Q_DECLARE_METATYPE(QDeclarativeChangeSet)
@@ -663,6 +664,73 @@ void tst_qquickvisualdatamodel::itemsDestroyed()
QVERIFY(!delegate);
}
+void tst_qquickvisualdatamodel::packagesDestroyed()
+{
+ SingleRoleModel model;
+ model.list.clear();
+ for (int i=0; i<30; i++)
+ model.list << ("item " + i);
+
+ QQuickView view;
+ view.rootContext()->setContextProperty("testModel", &model);
+
+ QString filename(TESTDATA("packageView.qml"));
+ view.setSource(QUrl::fromLocalFile(filename));
+
+ qApp->processEvents();
+
+ QQuickListView *leftview = findItem<QQuickListView>(view.rootObject(), "leftList");
+ QTRY_VERIFY(leftview != 0);
+
+ QQuickListView *rightview = findItem<QQuickListView>(view.rootObject(), "rightList");
+ QTRY_VERIFY(rightview != 0);
+
+ QQuickItem *leftContent = leftview->contentItem();
+ QTRY_VERIFY(leftContent != 0);
+
+ QQuickItem *rightContent = rightview->contentItem();
+ QTRY_VERIFY(rightContent != 0);
+
+ QCOMPARE(leftview->currentIndex(), 0);
+ QCOMPARE(rightview->currentIndex(), 20);
+
+ QDeclarativeGuard<QQuickItem> left;
+ QDeclarativeGuard<QQuickItem> right;
+
+ QVERIFY(findItem<QQuickItem>(leftContent, "wrapper", 1));
+ QVERIFY(findItem<QQuickItem>(rightContent, "wrapper", 1));
+
+ QVERIFY(left = findItem<QQuickItem>(leftContent, "wrapper", 19));
+ QVERIFY(right = findItem<QQuickItem>(rightContent, "wrapper", 19));
+
+ rightview->setCurrentIndex(0);
+ QCOMPARE(rightview->currentIndex(), 0);
+
+ QTRY_COMPARE(rightview->contentY(), 0.0);
+ QCoreApplication::sendPostedEvents();
+
+ QVERIFY(!left);
+ QVERIFY(!right);
+
+ QVERIFY(left = findItem<QQuickItem>(leftContent, "wrapper", 1));
+ QVERIFY(right = findItem<QQuickItem>(rightContent, "wrapper", 1));
+
+ rightview->setCurrentIndex(20);
+ QTRY_COMPARE(rightview->contentY(), 100.0);
+
+ QVERIFY(left);
+ QVERIFY(right);
+
+ QVERIFY(findItem<QQuickItem>(leftContent, "wrapper", 19));
+ QVERIFY(findItem<QQuickItem>(rightContent, "wrapper", 19));
+
+ leftview->setCurrentIndex(20);
+ QTRY_COMPARE(leftview->contentY(), 100.0);
+
+ QVERIFY(!left);
+ QVERIFY(!right);
+}
+
void tst_qquickvisualdatamodel::qaimRowsMoved()
{
// Test parameters passed in QAIM::rowsMoved() signal are converted correctly