Commit 83c466dd authored by Fabian Bumberger's avatar Fabian Bumberger Committed by The Qt Project
Browse files

Fix crash in FolderListModel


Change-Id: I8d012e9a356676dd3dad246579c7339eaddc1e91
Reviewed-by: default avatarAlan Alpert <aalpert@blackberry.com>
Reviewed-by: default avatarAlex Blasche <alexander.blasche@digia.com>
parent a8cfbf6a
dev 5.10 5.11 5.12 5.12.1 5.12.10 5.12.11 5.12.12 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13 5.13.0 5.13.1 5.13.2 5.14 5.14.0 5.14.1 5.14.2 5.15 5.15.0 5.15.1 5.15.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.9.8 6.0 6.0.0 6.1 6.1.0 6.1.1 6.1.2 6.1.3 6.2 6.2.0 6.2.1 6.2.2 old/5.2 wip/cmake wip/dbus wip/gc wip/itemviews wip/nacl wip/new-backend wip/pointerhandler wip/propertycache-refactor wip/qquickdeliveryagent wip/scenegraphng wip/tizen wip/webassembly v5.15.0-alpha1 v5.14.1 v5.14.0 v5.14.0-rc2 v5.14.0-rc1 v5.14.0-beta3 v5.14.0-beta2 v5.14.0-beta1 v5.14.0-alpha1 v5.13.2 v5.13.1 v5.13.0 v5.13.0-rc3 v5.13.0-rc2 v5.13.0-rc1 v5.13.0-beta4 v5.13.0-beta3 v5.13.0-beta2 v5.13.0-beta1 v5.13.0-alpha1 v5.12.7 v5.12.6 v5.12.5 v5.12.4 v5.12.3 v5.12.2 v5.12.1 v5.12.0 v5.12.0-rc2 v5.12.0-rc1 v5.12.0-beta4 v5.12.0-beta3 v5.12.0-beta2 v5.12.0-beta1 v5.12.0-alpha1 v5.11.3 v5.11.2 v5.11.1 v5.11.0 v5.11.0-rc2 v5.11.0-rc1 v5.11.0-beta4 v5.11.0-beta3 v5.11.0-beta2 v5.11.0-beta1 v5.11.0-alpha1 v5.10.1 v5.10.0 v5.10.0-rc3 v5.10.0-rc2 v5.10.0-rc1 v5.10.0-beta4 v5.10.0-beta3 v5.10.0-beta2 v5.10.0-beta1 v5.10.0-alpha1 v5.9.9 v5.9.8 v5.9.7 v5.9.6 v5.9.5 v5.9.4 v5.9.3 v5.9.2 v5.9.1 v5.9.0 v5.9.0-rc2 v5.9.0-rc1 v5.9.0-beta4 v5.9.0-beta3 v5.9.0-beta2 v5.9.0-beta1 v5.9.0-alpha1 v5.8.0 v5.8.0-rc1 v5.8.0-beta1 v5.8.0-alpha1 v5.7.1 v5.7.0 v5.7.0-rc1 v5.7.0-beta1 v5.7.0-alpha1 v5.6.3 v5.6.2 v5.6.1 v5.6.1-1 v5.6.0 v5.6.0-rc1 v5.6.0-beta1 v5.6.0-alpha1 v5.5.1 v5.5.0 v5.5.0-rc1 v5.5.0-beta1 v5.5.0-alpha1 v5.4.2 v5.4.1 v5.4.0 v5.4.0-rc1 v5.4.0-beta1 v5.4.0-alpha1 v5.3.2 v5.3.1 v5.3.0 v5.3.0-rc1 v5.3.0-beta1 v5.3.0-alpha1 v5.2.1 v5.2.0 v5.2.0-rc1 v5.2.0-beta1
No related merge requests found
Showing with 29 additions and 8 deletions
...@@ -193,9 +193,11 @@ void QQuickFolderListModelPrivate::_q_sortFinished(const QList<FileProperty> &li ...@@ -193,9 +193,11 @@ void QQuickFolderListModelPrivate::_q_sortFinished(const QList<FileProperty> &li
Q_Q(QQuickFolderListModel); Q_Q(QQuickFolderListModel);
QModelIndex parent; QModelIndex parent;
q->beginRemoveRows(parent, 0, data.size()-1); if (data.size() > 0) {
data.clear(); q->beginRemoveRows(parent, 0, data.size()-1);
q->endRemoveRows(); data.clear();
q->endRemoveRows();
}
q->beginInsertRows(parent, 0, list.size()-1); q->beginInsertRows(parent, 0, list.size()-1);
data = list; data = list;
......
import Qt.labs.folderlistmodel 1.0
FolderListModel {
showDotAndDotDot: false
sortReversed: true
}
...@@ -81,6 +81,7 @@ private slots: ...@@ -81,6 +81,7 @@ private slots:
#endif #endif
void showDotAndDotDot(); void showDotAndDotDot();
void showDotAndDotDot_data(); void showDotAndDotDot_data();
void sortReversed();
private: private:
void checkNoErrors(const QQmlComponent& component); void checkNoErrors(const QQmlComponent& component);
...@@ -115,7 +116,6 @@ void tst_qquickfolderlistmodel::basicProperties() ...@@ -115,7 +116,6 @@ void tst_qquickfolderlistmodel::basicProperties()
QAbstractListModel *flm = qobject_cast<QAbstractListModel*>(component.create()); QAbstractListModel *flm = qobject_cast<QAbstractListModel*>(component.create());
QVERIFY(flm != 0); QVERIFY(flm != 0);
QCOMPARE(flm->property("nameFilters").toStringList(), QStringList() << "*.qml"); // from basic.qml QCOMPARE(flm->property("nameFilters").toStringList(), QStringList() << "*.qml"); // from basic.qml
QCOMPARE(flm->property("folder").toUrl(), QUrl::fromLocalFile(QDir::currentPath())); QCOMPARE(flm->property("folder").toUrl(), QUrl::fromLocalFile(QDir::currentPath()));
...@@ -126,7 +126,7 @@ void tst_qquickfolderlistmodel::basicProperties() ...@@ -126,7 +126,7 @@ void tst_qquickfolderlistmodel::basicProperties()
QSignalSpy folderChangedSpy(flm, SIGNAL(folderChanged())); QSignalSpy folderChangedSpy(flm, SIGNAL(folderChanged()));
flm->setProperty("folder", dataDirectoryUrl()); flm->setProperty("folder", dataDirectoryUrl());
QVERIFY(folderChangedSpy.wait()); QVERIFY(folderChangedSpy.wait());
QCOMPARE(flm->property("count").toInt(), 5); QCOMPARE(flm->property("count").toInt(), 6);
QCOMPARE(flm->property("folder").toUrl(), dataDirectoryUrl()); QCOMPARE(flm->property("folder").toUrl(), dataDirectoryUrl());
QCOMPARE(flm->property("parentFolder").toUrl(), QUrl::fromLocalFile(QDir(directory()).canonicalPath())); QCOMPARE(flm->property("parentFolder").toUrl(), QUrl::fromLocalFile(QDir(directory()).canonicalPath()));
QCOMPARE(flm->property("sortField").toInt(), int(Name)); QCOMPARE(flm->property("sortField").toInt(), int(Name));
...@@ -152,7 +152,7 @@ void tst_qquickfolderlistmodel::showFiles() ...@@ -152,7 +152,7 @@ void tst_qquickfolderlistmodel::showFiles()
QVERIFY(flm != 0); QVERIFY(flm != 0);
flm->setProperty("folder", dataDirectoryUrl()); flm->setProperty("folder", dataDirectoryUrl());
QTRY_COMPARE(flm->property("count").toInt(), 5); // wait for refresh QTRY_COMPARE(flm->property("count").toInt(), 6); // wait for refresh
QCOMPARE(flm->property("showFiles").toBool(), true); QCOMPARE(flm->property("showFiles").toBool(), true);
flm->setProperty("showFiles", false); flm->setProperty("showFiles", false);
...@@ -200,7 +200,7 @@ void tst_qquickfolderlistmodel::refresh() ...@@ -200,7 +200,7 @@ void tst_qquickfolderlistmodel::refresh()
QVERIFY(flm != 0); QVERIFY(flm != 0);
flm->setProperty("folder", dataDirectoryUrl()); flm->setProperty("folder", dataDirectoryUrl());
QTRY_COMPARE(flm->property("count").toInt(),5); // wait for refresh QTRY_COMPARE(flm->property("count").toInt(),6); // wait for refresh
int count = flm->rowCount(); int count = flm->rowCount();
...@@ -304,7 +304,7 @@ void tst_qquickfolderlistmodel::showDotAndDotDot() ...@@ -304,7 +304,7 @@ void tst_qquickfolderlistmodel::showDotAndDotDot()
flm->setProperty("rootFolder", rootFolder); flm->setProperty("rootFolder", rootFolder);
flm->setProperty("showDotAndDotDot", showDotAndDotDot); flm->setProperty("showDotAndDotDot", showDotAndDotDot);
int count = 5; int count = 6;
if (showDot) count++; if (showDot) count++;
if (showDotDot) count++; if (showDotDot) count++;
QTRY_COMPARE(flm->property("count").toInt(), count); // wait for refresh QTRY_COMPARE(flm->property("count").toInt(), count); // wait for refresh
...@@ -326,7 +326,19 @@ void tst_qquickfolderlistmodel::showDotAndDotDot_data() ...@@ -326,7 +326,19 @@ void tst_qquickfolderlistmodel::showDotAndDotDot_data()
QTest::newRow("false") << dataDirectoryUrl() << QUrl() << false << false << false; QTest::newRow("false") << dataDirectoryUrl() << QUrl() << false << false << false;
QTest::newRow("true") << dataDirectoryUrl() << QUrl() << true << true << true; QTest::newRow("true") << dataDirectoryUrl() << QUrl() << true << true << true;
QTest::newRow("true but root") << dataDirectoryUrl() << dataDirectoryUrl() << true << true << false; QTest::newRow("true but root") << dataDirectoryUrl() << dataDirectoryUrl() << true << true << false;
}
void tst_qquickfolderlistmodel::sortReversed()
{
QQmlComponent component(&engine, testFileUrl("sortReversed.qml"));
checkNoErrors(component);
QAbstractListModel *flm = qobject_cast<QAbstractListModel*>(component.create());
QVERIFY(flm != 0);
flm->setProperty("folder", dataDirectoryUrl());
int count = 6;
QTRY_COMPARE(flm->property("count").toInt(), count); // wait for refresh
QCOMPARE(flm->data(flm->index(0),FileNameRole).toString(), QLatin1String("sortReversed.qml"));
} }
QTEST_MAIN(tst_qquickfolderlistmodel) QTEST_MAIN(tst_qquickfolderlistmodel)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment