diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-07-17 17:16:07 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-07-22 14:02:57 +0000 |
commit | b1dbd7e3580fb92879e0b3e0c9d21c1fd8dc4012 (patch) | |
tree | 2052368666b2d2e7bbd09590a53b3e878048f676 | |
parent | 7425d00427ea62f7b654b873dc61a1f20204cac4 (diff) | |
download | qt-creator-b1dbd7e3580fb92879e0b3e0c9d21c1fd8dc4012.tar.gz |
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>
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeproject.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 6 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.cpp | 7 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.h | 1 |
5 files changed, 6 insertions, 12 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 512e0124de..9b66abfeee 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -375,8 +375,6 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) Target *t = bc->target(); t->setApplicationTargets(bc->appTargets()); t->setDeploymentData(bc->deploymentData()); - - t->updateDefaultRunConfigurations(); } { diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index ae7b563dbd..1996d8c96f 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -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()); diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index a634aaf3ca..3d658ce8f7 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -1199,8 +1199,6 @@ void QbsProject::updateBuildTargetData() OpTimer optimer("updateBuildTargetData"); updateApplicationTargets(); updateDeploymentInfo(); - if (activeTarget()) - activeTarget()->updateDefaultRunConfigurations(); } } // namespace Internal diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index c3426e9b41..281f88de57 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -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:-) } } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 835496d176..4c3169716b 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -131,7 +131,6 @@ private: void setAllBuildConfigurationsEnabled(bool enabled); QString executableFor(const QmakeProFile *file); - void updateRunConfigurations(); void updateCppCodeModel(); void updateQmlJSCodeModel(); |