diff options
author | Andrew den Exter <andrew.den.exter@jollamobile.com> | 2013-11-21 11:15:59 +1000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-24 01:44:43 +0100 |
commit | f0d2857271a2e619d6ede54a6855326e9232fd12 (patch) | |
tree | 70bd096377d5569bcaadb3704d3bd931692ed9f7 /tests/auto | |
parent | 85fea8a68b90c817c47022ca5157ff80cb497d4d (diff) |
Fix crash when assigning a null QObject or derived property as a ListView model
Fall through to the null case handler in the event of a QVariant of QObject or
derived type with a null value, rather than asserting in the instance handler.
Task-number: QTBUG-34999
Change-Id: I5eeffbe29a263c57e6157d516b138ddc8e2e7a95
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/quick/qquicklistview/data/typedModel.qml | 23 | ||||
-rw-r--r-- | tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 20 |
2 files changed, 43 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicklistview/data/typedModel.qml b/tests/auto/quick/qquicklistview/data/typedModel.qml new file mode 100644 index 0000000000..d2b3f7e42f --- /dev/null +++ b/tests/auto/quick/qquicklistview/data/typedModel.qml @@ -0,0 +1,23 @@ +import QtQuick 2.0 + +ListView { + width: 100 + height: 100 + + delegate: Item { + width: 100 + height: 10 + } + model: listModel + + ListModel { + id: listModel + + ListElement { label: "a" } + ListElement { label: "b" } + ListElement { label: "c" } + ListElement { label: "d" } + ListElement { label: "e" } + ListElement { label: "f" } + } +} diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index f62151c2d8..6ec7cf8dc1 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -213,6 +213,8 @@ private slots: void outsideViewportChangeNotAffectingView(); void testProxyModelChangedAfterMove(); + void typedModel(); + private: template <class T> void items(const QUrl &source); template <class T> void changed(const QUrl &source); @@ -6960,6 +6962,24 @@ void tst_QQuickListView::testProxyModelChangedAfterMove() delete window; } +void tst_QQuickListView::typedModel() +{ + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("typedModel.qml")); + + QScopedPointer<QObject> object(component.create()); + + QQuickListView *listview = qobject_cast<QQuickListView *>(object.data()); + QVERIFY(listview); + + QCOMPARE(listview->count(), 6); + + QQmlListModel *listModel = 0; + + listview->setModel(QVariant::fromValue(listModel)); + QCOMPARE(listview->count(), 0); +} + QTEST_MAIN(tst_QQuickListView) #include "tst_qquicklistview.moc" |