forked from qt-creator/qt-creator
CMake: fix crash while clicking context menu
It crashed if the root project had some error and I tried to build a subproject. Change-Id: I13dc620402a5f79e507e7da3fedb5eb09a4112da Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -112,15 +112,17 @@ void CMakeProjectPlugin::updateContextActions(ProjectExplorer::Node *node,
|
|||||||
ProjectExplorer::Project *project)
|
ProjectExplorer::Project *project)
|
||||||
{
|
{
|
||||||
CMakeTargetNode *targetNode = dynamic_cast<CMakeTargetNode *>(node);
|
CMakeTargetNode *targetNode = dynamic_cast<CMakeTargetNode *>(node);
|
||||||
|
// as targetNode can be deleted while the menu is open, we keep only the
|
||||||
|
const QString targetDisplayName = targetNode ? targetNode->displayName() : QString();
|
||||||
CMakeProject *cmProject = dynamic_cast<CMakeProject *>(project);
|
CMakeProject *cmProject = dynamic_cast<CMakeProject *>(project);
|
||||||
|
|
||||||
// Build Target:
|
// Build Target:
|
||||||
disconnect(m_buildTargetContextAction);
|
disconnect(m_buildTargetContextAction);
|
||||||
m_buildTargetContextAction->setParameter(targetNode ? targetNode->displayName() : QString());
|
m_buildTargetContextAction->setParameter(targetDisplayName);
|
||||||
m_buildTargetContextAction->setEnabled(targetNode);
|
m_buildTargetContextAction->setEnabled(targetNode);
|
||||||
m_buildTargetContextAction->setVisible(targetNode);
|
m_buildTargetContextAction->setVisible(targetNode);
|
||||||
if (cmProject && targetNode) {
|
if (cmProject && targetNode) {
|
||||||
connect(m_buildTargetContextAction, &Utils::ParameterAction::triggered,
|
connect(m_buildTargetContextAction, &Utils::ParameterAction::triggered,
|
||||||
cmProject, [cmProject, targetNode]() { cmProject->buildCMakeTarget(targetNode->displayName()); });
|
cmProject, [cmProject, targetDisplayName]() { cmProject->buildCMakeTarget(targetDisplayName); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user