diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 6767b3b1f00..29db6309189 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -491,7 +491,6 @@ bool FolderNode::isAncesterOf(Node *n) bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode) { std::unique_ptr nn(newNode); - if (!oldNode) { addNode(nn.release()); // Happens e.g. when a project is registered } else { @@ -506,7 +505,6 @@ bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode) } delete oldNode; } - ProjectTree::emitSubtreeChanged(this); return true; } diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 16a5a35a18e..0ef8e5cb508 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include @@ -210,6 +211,19 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err void ResourceEditorPlugin::extensionsInitialized() { + ProjectTree::registerTreeManager([](FolderNode *folder) { + QList toReplace; + folder->forEachNode([&toReplace](FileNode *fn) { + if (fn->fileType() == FileType::Resource) + toReplace.append(fn); + }); + + for (FileNode *file : toReplace) { + FolderNode *const pn = file->parentFolderNode(); + const Utils::FileName path = file->filePath(); + pn->replaceSubtree(file, new ResourceTopLevelNode(path, QString(), pn)); + } + }); } void ResourceEditorPlugin::onUndo()