diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 2cdb03208c4..09eb596662d 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -560,6 +560,12 @@ void FolderNode::setFolderNodes(const QList &folders) node->setParentFolderNode(this); } +void FolderNode::makeEmpty() +{ + setFolderNodes({}); + setFileNodes({}); +} + bool FolderNode::showInSimpleTree() const { return false; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 092e842453f..6016a5e20e2 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -499,7 +499,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, } if (isQrcFile) - static_cast(fn)->update(); + static_cast(fn)->addInternalNodes(); else setupFolder(fn, fileTypeHash, c, c->path(), generated); } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index d3b00a8b5ff..8438741c5e8 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -451,7 +451,9 @@ struct InternalNode // If the cumulative evaluation botched the file too much, try the exact one. if (contents.isEmpty()) vfs->readVirtualFile(file.toString(), QMakeVfs::VfsExact, &contents); - folder->addFolderNode(new ResourceEditor::ResourceTopLevelNode(file, contents, folder)); + auto resourceNode = new ResourceEditor::ResourceTopLevelNode(file, contents, folder); + folder->addFolderNode(resourceNode); + resourceNode->addInternalNodes(); } } else { for (const FileName &file : files) diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 7bcc2d6c0f3..dad9bad0232 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -119,7 +119,7 @@ ResourceTopLevelNode::~ResourceTopLevelNode() delete m_document; } -void ResourceTopLevelNode::update() +void ResourceTopLevelNode::addInternalNodes() { QMap> filesToAdd; QMap> foldersToAddToFolders; @@ -518,7 +518,8 @@ bool ResourceFileWatcher::reload(QString *errorString, ReloadFlag flag, ChangeTy Q_UNUSED(flag) if (type == TypePermissions) return true; - m_node->update(); + m_node->makeEmpty(); + m_node->addInternalNodes(); return true; } diff --git a/src/plugins/resourceeditor/resourcenode.h b/src/plugins/resourceeditor/resourcenode.h index 1ea628e3939..770b7edeb3a 100644 --- a/src/plugins/resourceeditor/resourcenode.h +++ b/src/plugins/resourceeditor/resourcenode.h @@ -41,7 +41,7 @@ class RESOURCE_EXPORT ResourceTopLevelNode : public ProjectExplorer::FolderNode public: ResourceTopLevelNode(const Utils::FileName &filePath, const QString &contents, FolderNode *parent); ~ResourceTopLevelNode() override; - void update(); + void addInternalNodes(); QString addFileFilter() const override;