diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index b514b3f2fbb..4b700e89a21 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -3406,15 +3406,12 @@ void ProjectExplorerPluginPrivate::removeProject() Node *node = ProjectTree::findCurrentNode(); if (!node) return; - ProjectNode *subProjectNode = node->managingProject(); - if (!subProjectNode) - return; - ProjectNode *projectNode = subProjectNode->managingProject(); + ProjectNode *projectNode = node->managingProject(); if (projectNode) { - Utils::RemoveFileDialog removeFileDialog(subProjectNode->filePath().toString(), ICore::mainWindow()); + Utils::RemoveFileDialog removeFileDialog(node->filePath().toString(), ICore::mainWindow()); removeFileDialog.setDeleteFileVisible(false); if (removeFileDialog.exec() == QDialog::Accepted) - projectNode->removeSubProject(subProjectNode->filePath().toString()); + projectNode->removeSubProject(node->filePath().toString()); } } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 7ae34f31b62..1fc048e3ced 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -132,7 +132,7 @@ bool QmakePriFileNode::supportsAction(ProjectAction action, const Node *node) co break; } case ProjectType::SubDirsTemplate: - if (action == AddSubProject || action == RemoveSubProject) + if (action == AddSubProject) return true; break; default: @@ -347,6 +347,13 @@ bool QmakeProFileNode::includedInExactParse() const return pro && pro->includedInExactParse(); } +bool QmakeProFileNode::supportsAction(ProjectAction action, const Node *node) const +{ + if (action == RemoveSubProject) + return parentProjectNode() && !parentProjectNode()->asContainerNode(); + return QmakePriFileNode::supportsAction(action, node); +} + FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const { Q_UNUSED(files) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 0a70b7a8ea5..2f29eac5e40 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -90,6 +90,7 @@ public: bool isQtcRunnable() const; bool includedInExactParse() const; + bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override; bool showInSimpleTree() const override; QString buildKey() const override;