forked from qt-creator/qt-creator
QMakePM: Fix crash when running qmake before the project is parsed
Disable the build actions properly. Change-Id: Id4e2906b1891fcb3387e23cb0e0a8c1f119d2426 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
committed by
Orgad Shaneh
parent
37b415379d
commit
d3e4ef5868
@@ -258,7 +258,7 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
|
||||
connect(EditorManager::instance(), &EditorManager::currentEditorChanged,
|
||||
this, &QmakeProjectManagerPlugin::updateBuildFileAction);
|
||||
|
||||
updateRunQMakeAction();
|
||||
updateActions();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -277,9 +277,12 @@ void QmakeProjectManagerPlugin::projectChanged()
|
||||
else
|
||||
m_previousStartupProject = qobject_cast<QmakeProject *>(SessionManager::startupProject());
|
||||
|
||||
if (m_previousStartupProject)
|
||||
if (m_previousStartupProject) {
|
||||
connect(m_previousStartupProject, &Project::activeTargetChanged,
|
||||
this, &QmakeProjectManagerPlugin::activeTargetChanged);
|
||||
connect(m_previousStartupProject, &QmakeProject::parsingFinished,
|
||||
this, &QmakeProjectManagerPlugin::updateActions);
|
||||
}
|
||||
|
||||
activeTargetChanged();
|
||||
}
|
||||
@@ -299,6 +302,12 @@ void QmakeProjectManagerPlugin::activeTargetChanged()
|
||||
updateRunQMakeAction();
|
||||
}
|
||||
|
||||
void QmakeProjectManagerPlugin::updateActions()
|
||||
{
|
||||
updateRunQMakeAction();
|
||||
updateContextActions();
|
||||
}
|
||||
|
||||
void QmakeProjectManagerPlugin::updateRunQMakeAction()
|
||||
{
|
||||
bool enable = true;
|
||||
@@ -307,6 +316,7 @@ void QmakeProjectManagerPlugin::updateRunQMakeAction()
|
||||
auto pro = qobject_cast<QmakeProject *>(m_previousStartupProject);
|
||||
m_runQMakeAction->setVisible(pro);
|
||||
if (!pro
|
||||
|| !pro->rootProjectNode()
|
||||
|| !pro->activeTarget()
|
||||
|| !pro->activeTarget()->activeBuildConfiguration())
|
||||
enable = false;
|
||||
@@ -334,7 +344,11 @@ void QmakeProjectManagerPlugin::updateContextActions()
|
||||
FileNode *fileNode = node ? node->asFileNode() : nullptr;
|
||||
|
||||
bool buildFilePossible = subProjectNode && fileNode && (fileNode->fileType() == FileType::Source);
|
||||
bool subProjectActionsVisible = qmakeProject && subProjectNode && (subProjectNode != qmakeProject->rootProjectNode());
|
||||
bool subProjectActionsVisible = false;
|
||||
if (qmakeProject && subProjectNode) {
|
||||
if (QmakeProFileNode *rootNode = qmakeProject->rootProjectNode())
|
||||
subProjectActionsVisible = subProjectNode != rootNode;
|
||||
}
|
||||
|
||||
QString subProjectName;
|
||||
if (subProjectActionsVisible)
|
||||
|
||||
@@ -65,6 +65,7 @@ private slots:
|
||||
private:
|
||||
void projectChanged();
|
||||
void activeTargetChanged();
|
||||
void updateActions();
|
||||
void updateRunQMakeAction();
|
||||
void updateContextActions();
|
||||
void buildStateChanged(ProjectExplorer::Project *pro);
|
||||
|
||||
@@ -256,6 +256,7 @@ bool QMakeStep::init(QList<const BuildStep *> &earlierSteps)
|
||||
QmakeProFileNode *node = static_cast<QmakeProject *>(qmakeBc->target()->project())->rootProjectNode();
|
||||
if (qmakeBc->subNodeBuild())
|
||||
node = qmakeBc->subNodeBuild();
|
||||
QTC_ASSERT(node, return false);
|
||||
QString proFile = node->filePath().toString();
|
||||
|
||||
QList<ProjectExplorer::Task> tasks = qtVersion->reportIssues(proFile, workingDirectory);
|
||||
|
||||
Reference in New Issue
Block a user