diff --git a/src/gui/itemmodels/qfilesystemmodel.cpp b/src/gui/itemmodels/qfilesystemmodel.cpp index 0ee97d06beb..d29a1c01144 100644 --- a/src/gui/itemmodels/qfilesystemmodel.cpp +++ b/src/gui/itemmodels/qfilesystemmodel.cpp @@ -987,14 +987,15 @@ Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const } flags |= Qt::ItemIsDragEnabled; + + if (!indexNode->isDir()) + flags |= Qt::ItemNeverHasChildren; if (d->readOnly) return flags; if ((index.column() == 0) && indexNode->permissions() & QFile::WriteUser) { flags |= Qt::ItemIsEditable; if (indexNode->isDir()) flags |= Qt::ItemIsDropEnabled; - else - flags |= Qt::ItemNeverHasChildren; } return flags; } diff --git a/tests/auto/gui/itemmodels/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/gui/itemmodels/qfilesystemmodel/tst_qfilesystemmodel.cpp index b6f6328acd6..edd7316d89f 100644 --- a/tests/auto/gui/itemmodels/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/gui/itemmodels/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -261,10 +261,14 @@ void tst_QFileSystemModel::readOnly() QModelIndex root = model->setRootPath(flatDirTestPath); QTRY_VERIFY(model->rowCount(root) > 0); + + // ItemIsEditable should change, ItemNeverHasChildren should not change QVERIFY(!(model->flags(model->index(fileName)) & Qt::ItemIsEditable)); + QVERIFY(model->flags(model->index(fileName)) & Qt::ItemNeverHasChildren); model->setReadOnly(false); QCOMPARE(model->isReadOnly(), false); QVERIFY(model->flags(model->index(fileName)) & Qt::ItemIsEditable); + QVERIFY(model->flags(model->index(fileName)) & Qt::ItemNeverHasChildren); } class CustomFileIconProvider : public QFileIconProvider