ProjectExplorer: Update run config list centrally

This prodecure requires no further information from the specific project
managers, so we can start it from the ProjectExplorer itself.
Also wait until after project parsing has officially finished and the
run configurations have updated their "enabled" state. Otherwise,
RunConfiguration::isEnabled() will always return false, potentially
leading to the active run configuration getting switched
unintentionally.

Fixes: QTCREATORBUG-21692
Change-Id: I32f4f758b5baa6222329d07b811993568eff1ee3
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-07-17 17:16:07 +02:00
parent 7425d00427
commit b1dbd7e358
5 changed files with 6 additions and 12 deletions

View File

@@ -375,8 +375,6 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc)
Target *t = bc->target();
t->setApplicationTargets(bc->appTargets());
t->setDeploymentData(bc->deploymentData());
t->updateDefaultRunConfigurations();
}
{

View File

@@ -118,6 +118,12 @@ Target::Target(Project *project, Kit *k, _constructor_tag) :
{
QTC_CHECK(d->m_kit);
connect(DeviceManager::instance(), &DeviceManager::updated, this, &Target::updateDeviceState);
connect(project, &Project::parsingFinished, this, [this](bool success) {
if (success && this->project() == SessionManager::startupProject()
&& this == this->project()->activeTarget()) {
updateDefaultRunConfigurations();
}
}, Qt::QueuedConnection); // Must wait for run configs to change their enabled state.
setDisplayName(d->m_kit->displayName());
setToolTip(d->m_kit->toHtml());

View File

@@ -1199,8 +1199,6 @@ void QbsProject::updateBuildTargetData()
OpTimer optimer("updateBuildTargetData");
updateApplicationTargets();
updateDeploymentInfo();
if (activeTarget())
activeTarget()->updateDefaultRunConfigurations();
}
} // namespace Internal

View File

@@ -348,12 +348,6 @@ void QmakeProject::updateQmlJSCodeModel()
modelManager->updateProjectInfo(projectInfo, this);
}
void QmakeProject::updateRunConfigurations()
{
if (activeTarget())
activeTarget()->updateDefaultRunConfigurations();
}
void QmakeProject::scheduleAsyncUpdate(QmakeProFile *file, QmakeProFile::AsyncUpdateDelay delay)
{
if (m_asyncUpdateState == ShuttingDown)
@@ -492,7 +486,6 @@ void QmakeProject::decrementPendingEvaluateFutures()
updateBuildSystemData();
if (activeTarget())
activeTarget()->updateDefaultDeployConfigurations();
updateRunConfigurations();
emitParsingFinished(true); // Qmake always returns (some) data, even when it failed:-)
}
}

View File

@@ -131,7 +131,6 @@ private:
void setAllBuildConfigurationsEnabled(bool enabled);
QString executableFor(const QmakeProFile *file);
void updateRunConfigurations();
void updateCppCodeModel();
void updateQmlJSCodeModel();