From 9749d38fde4a115be36bd6f8c14597103ecc5bcc Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Wed, 14 Apr 2010 13:45:35 +0200 Subject: [PATCH] Enable the build project action if the project has buildable dependencies Task-Nr: QTCREATORBUG-1016 --- src/plugins/projectexplorer/projectexplorer.cpp | 17 ++++++++++++++--- src/plugins/projectexplorer/projectexplorer.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index d25c1377df0..bff30deccd0 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -260,6 +260,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er this, SLOT(updatePreferredWizardKinds())); connect(d->m_session, SIGNAL(projectRemoved(ProjectExplorer::Project*)), this, SLOT(updatePreferredWizardKinds())); + connect(d->m_session, SIGNAL(dependencyChanged(ProjectExplorer::Project*,ProjectExplorer::Project*)), + this, SLOT(updateActions())); d->m_proWindow = new ProjectWindow; @@ -1358,11 +1360,11 @@ void ProjectExplorerPlugin::updateActions() Project *startupProject = session()->startupProject(); bool enableBuildActions = startupProject && ! (d->m_buildManager->isBuilding(startupProject)) - && startupProject->hasActiveBuildSettings(); + && hasBuildSettings(startupProject); bool enableBuildActionsContextMenu = d->m_currentProject && ! (d->m_buildManager->isBuilding(d->m_currentProject)) - && d->m_currentProject->hasActiveBuildSettings(); + && hasBuildSettings(d->m_currentProject); bool hasProjects = !d->m_session->projects().isEmpty(); @@ -1632,12 +1634,21 @@ void ProjectExplorerPlugin::runProjectContextMenu() runProjectImpl(d->m_currentProject, ProjectExplorer::Constants::RUNMODE); } +bool ProjectExplorerPlugin::hasBuildSettings(Project *pro) +{ + const QList<Project *> & projects = d->m_session->projectOrder(pro); + foreach(Project *pro, projects) + if (pro->activeTarget()->activeBuildConfiguration()) + return true; + return false; +} + void ProjectExplorerPlugin::runProjectImpl(Project *pro, QString mode) { if (!pro) return; - if (d->m_projectExplorerSettings.buildBeforeRun && pro->hasActiveBuildSettings()) { + if (d->m_projectExplorerSettings.buildBeforeRun && hasBuildSettings(pro)) { if (!pro->activeTarget()->activeRunConfiguration()->isEnabled()) { if (!showBuildConfigDialog()) return; diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 467f124e7e2..ea0bc2624b9 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -207,6 +207,7 @@ private: bool parseArguments(const QStringList &arguments, QString *error); void runProjectImpl(Project *pro, QString mode); void executeRunConfiguration(RunConfiguration *, const QString &mode); + bool hasBuildSettings(Project *pro); bool showBuildConfigDialog(); void setCurrent(Project *project, QString filePath, Node *node); -- GitLab