summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-07-17 17:16:07 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-07-22 14:02:57 +0000
commitb1dbd7e3580fb92879e0b3e0c9d21c1fd8dc4012 (patch)
tree2052368666b2d2e7bbd09590a53b3e878048f676
parent7425d00427ea62f7b654b873dc61a1f20204cac4 (diff)
downloadqt-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.cpp2
-rw-r--r--src/plugins/projectexplorer/target.cpp6
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp7
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h1
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();