diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 6fed731bf4d..324d6f4593d 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -546,20 +546,13 @@ void FolderNode::removeNode(Node *node) and emits the corresponding signals from the projectNode. */ -void FolderNode::setNodes(const QList &nodes) -{ - qDeleteAll(m_nodes); - m_nodes = nodes; - for (Node *node : m_nodes) - node->setParentFolderNode(this); -} - /*! Removes all files and subfolders from this folder node. */ void FolderNode::makeEmpty() { - setNodes({}); + qDeleteAll(m_nodes); + m_nodes.clear(); } bool FolderNode::showInSimpleTree() const diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index bdf597be909..b4810587625 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -248,7 +248,6 @@ public: void addNode(Node *node); void removeNode(Node *node); - void setNodes(const QList &nodes); // all subFolders that are projects QList projectNodes() const; diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 1d38fd960c0..a619f0b6c1b 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -122,7 +122,6 @@ ResourceTopLevelNode::~ResourceTopLevelNode() void ResourceTopLevelNode::addInternalNodes() { QMap> nodesToAdd; - QMap> foldersToAddToFolders; QMap> foldersToAddToPrefix; ResourceFile file(filePath().toString(), m_contents); @@ -186,9 +185,9 @@ void ResourceTopLevelNode::addInternalNodes() this, currentPrefixNode); if (parentIsPrefix) { foldersToAddToPrefix[prefixId] << newNode; + nodesToAdd[prefixId] << newNode; } else { PrefixFolderLang parentFolderId(prefix, parentFolderName, lang); - foldersToAddToFolders[parentFolderId] << newNode; nodesToAdd[parentFolderId] << newNode; } folderNodes.insert(folderId, newNode); @@ -207,13 +206,17 @@ void ResourceTopLevelNode::addInternalNodes() } } - foreach (FolderNode *sfn, folderNodes()) { + const QList fnodes = folderNodes(); + for (FolderNode *sfn : fnodes) { ResourceFolderNode *srn = static_cast(sfn); PrefixFolderLang folderId(srn->prefix(), QString(), srn->lang()); - srn->setNodes(nodesToAdd[folderId]); - foreach (FolderNode* ssfn, sfn->folderNodes()) { + const QList nodes = nodesToAdd[folderId]; + for (Node *n : nodes) + srn->addNode(n); + const QList sfnodes = sfn->folderNodes(); + for (FolderNode *ssfn : sfnodes) { SimpleResourceFolderNode *sssn = static_cast(ssfn); - sssn->addFilesAndSubfolders(foldersToAddToFolders, nodesToAdd, srn->prefix(), srn->lang()); + sssn->addFilesAndSubfolders(nodesToAdd, srn->prefix(), srn->lang()); } } } @@ -649,13 +652,13 @@ ResourceFolderNode *SimpleResourceFolderNode::prefixNode() const return m_prefixNode; } -void SimpleResourceFolderNode::addFilesAndSubfolders(const QMap > &foldersToAdd, - const QMap > &nodesToAdd, +void SimpleResourceFolderNode::addFilesAndSubfolders(const QMap> &nodesToAdd, const QString &prefix, const QString &lang) { - setNodes(nodesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); + for (Node *node : nodesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))) + addNode(node); foreach (FolderNode* subNode, folderNodes()) { SimpleResourceFolderNode* sn = static_cast(subNode); - sn->addFilesAndSubfolders(foldersToAdd, nodesToAdd, prefix, lang); + sn->addFilesAndSubfolders(nodesToAdd, prefix, lang); } } diff --git a/src/plugins/resourceeditor/resourcenode.h b/src/plugins/resourceeditor/resourcenode.h index 95ee5129f75..e8d480122eb 100644 --- a/src/plugins/resourceeditor/resourcenode.h +++ b/src/plugins/resourceeditor/resourcenode.h @@ -122,8 +122,7 @@ public: const QString &prefix, const QString &lang, Utils::FileName absolutePath, ResourceTopLevelNode *topLevel, ResourceFolderNode *prefixNode); QList supportedActions(ProjectExplorer::Node *node) const; - void addFilesAndSubfolders(const QMap > &foldersToAdd, - const QMap > &nodesToAdd, + void addFilesAndSubfolders(const QMap > &nodesToAdd, const QString &prefix, const QString &lang); bool addFiles(const QStringList &filePaths, QStringList *notAdded); bool removeFiles(const QStringList &filePaths, QStringList *notRemoved);