aboutsummaryrefslogtreecommitdiffstats
path: root/src
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 /src
parent7425d00427ea62f7b654b873dc61a1f20204cac4 (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.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 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();