diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp index dc9af2da6c4..070701e754f 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp @@ -27,10 +27,12 @@ #include "assetslibrarydirsmodel.h" #include "assetslibraryfilesmodel.h" +#include +#include +#include +#include #include #include -#include -#include #include @@ -298,8 +300,8 @@ void AssetsLibraryModel::setRootPath(const QString &path) m_fileSystemWatcher->clear(); - std::function parseDirRecursive; - parseDirRecursive = [this, &parseDirRecursive](AssetsLibraryDir *currAssetsDir, int currDepth) { + std::function parseDir; + parseDir = [this, &parseDir](AssetsLibraryDir *currAssetsDir, int currDepth, bool recursive) { m_fileSystemWatcher->addDirectory(currAssetsDir->dirPath(), Utils::FileSystemWatcher::WatchAllChanges); QDir dir(currAssetsDir->dirPath()); @@ -317,20 +319,22 @@ void AssetsLibraryModel::setRootPath(const QString &path) } } - dir.setNameFilters({}); - dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); - QDirIterator itDirs(dir); + if (recursive) { + dir.setNameFilters({}); + dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + QDirIterator itDirs(dir); - while (itDirs.hasNext()) { - QDir subDir = itDirs.next(); - if (currDepth == 1 && ignoredTopLevelDirs.contains(subDir.dirName())) - continue; + while (itDirs.hasNext()) { + QDir subDir = itDirs.next(); + if (currDepth == 1 && ignoredTopLevelDirs.contains(subDir.dirName())) + continue; - auto assetsDir = new AssetsLibraryDir(subDir.path(), currDepth, - loadExpandedState(subDir.path()), currAssetsDir); - currAssetsDir->addDir(assetsDir); - saveExpandedState(loadExpandedState(assetsDir->dirPath()), assetsDir->dirPath()); - isEmpty &= parseDirRecursive(assetsDir, currDepth + 1); + auto assetsDir = new AssetsLibraryDir(subDir.path(), currDepth, + loadExpandedState(subDir.path()), currAssetsDir); + currAssetsDir->addDir(assetsDir); + saveExpandedState(loadExpandedState(assetsDir->dirPath()), assetsDir->dirPath()); + isEmpty &= parseDir(assetsDir, currDepth + 1, true); + } } if (!m_searchText.isEmpty() && isEmpty) @@ -344,7 +348,8 @@ void AssetsLibraryModel::setRootPath(const QString &path) beginResetModel(); m_assetsDir = new AssetsLibraryDir(path, 0, true, this); - bool isEmpty = parseDirRecursive(m_assetsDir, 1); + bool hasProject = !QmlDesignerPlugin::instance()->documentManager().currentProjectDirPath().isEmpty(); + bool isEmpty = parseDir(m_assetsDir, 1, hasProject); setIsEmpty(isEmpty); bool noAssets = m_searchText.isEmpty() && isEmpty;