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 /src | |
parent | 7425d00427ea62f7b654b873dc61a1f20204cac4 (diff) |
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>
Diffstat (limited to 'src')
-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 512e0124dec..9b66abfeee6 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 ae7b563dbd2..1996d8c96fc 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 a634aaf3ca8..3d658ce8f7f 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 c3426e9b417..281f88de579 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 835496d176a..4c3169716bb 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(); |