forked from qt-creator/qt-creator
ProjectExplorer: Fix "Remove subproject" functionality
This was completely broken: Both The qmake-specific logic for enabling the menu item and the generic code executing the action operated on the wrong nodes. Change-Id: Ic6af6f87999dfd3b939f185312be944750b21fa9 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -3406,15 +3406,12 @@ void ProjectExplorerPluginPrivate::removeProject()
|
|||||||
Node *node = ProjectTree::findCurrentNode();
|
Node *node = ProjectTree::findCurrentNode();
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
ProjectNode *subProjectNode = node->managingProject();
|
ProjectNode *projectNode = node->managingProject();
|
||||||
if (!subProjectNode)
|
|
||||||
return;
|
|
||||||
ProjectNode *projectNode = subProjectNode->managingProject();
|
|
||||||
if (projectNode) {
|
if (projectNode) {
|
||||||
Utils::RemoveFileDialog removeFileDialog(subProjectNode->filePath().toString(), ICore::mainWindow());
|
Utils::RemoveFileDialog removeFileDialog(node->filePath().toString(), ICore::mainWindow());
|
||||||
removeFileDialog.setDeleteFileVisible(false);
|
removeFileDialog.setDeleteFileVisible(false);
|
||||||
if (removeFileDialog.exec() == QDialog::Accepted)
|
if (removeFileDialog.exec() == QDialog::Accepted)
|
||||||
projectNode->removeSubProject(subProjectNode->filePath().toString());
|
projectNode->removeSubProject(node->filePath().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ bool QmakePriFileNode::supportsAction(ProjectAction action, const Node *node) co
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ProjectType::SubDirsTemplate:
|
case ProjectType::SubDirsTemplate:
|
||||||
if (action == AddSubProject || action == RemoveSubProject)
|
if (action == AddSubProject)
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -347,6 +347,13 @@ bool QmakeProFileNode::includedInExactParse() const
|
|||||||
return pro && pro->includedInExactParse();
|
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
|
FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(files)
|
Q_UNUSED(files)
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ public:
|
|||||||
bool isQtcRunnable() const;
|
bool isQtcRunnable() const;
|
||||||
bool includedInExactParse() const;
|
bool includedInExactParse() const;
|
||||||
|
|
||||||
|
bool supportsAction(ProjectExplorer::ProjectAction action, const Node *node) const override;
|
||||||
bool showInSimpleTree() const override;
|
bool showInSimpleTree() const override;
|
||||||
|
|
||||||
QString buildKey() const override;
|
QString buildKey() const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user