From 3aef80df5747df29e17ef7ebb4529e7c5d80f3be Mon Sep 17 00:00:00 2001 From: dt <qtc-commiter@nokia.com> Date: Fri, 16 Jan 2009 12:22:43 +0100 Subject: [PATCH] Fixes: Run from the context menu runs the startupProject Task: Reported on mailing list. --- .../projectexplorer/projectexplorer.cpp | 21 +++++++++++++++++-- src/plugins/projectexplorer/projectexplorer.h | 3 +++ .../projectexplorerconstants.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index c6cb624fb86..5e41913db02 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -521,6 +521,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin cmd = am->registerAction(m_runAction, Constants::RUN, globalcontext); cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+R"))); mbuild->addAction(cmd, Constants::G_BUILD_RUN); + + m_runActionContextMenu = new QAction(runIcon, tr("Run"), this); + cmd = am->registerAction(m_runActionContextMenu, Constants::RUNCONTEXTMENU, globalcontext); mproject->addAction(cmd, Constants::G_PROJECT_RUN); Core::ActionContainer *mrc = am->createMenu(Constants::RUNCONFIGURATIONMENU); @@ -616,6 +619,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList & /*arguments*/, QStrin connect(m_cleanAction, SIGNAL(triggered()), this, SLOT(cleanProject())); connect(m_cleanSessionAction, SIGNAL(triggered()), this, SLOT(cleanSession())); connect(m_runAction, SIGNAL(triggered()), this, SLOT(runProject())); + connect(m_runActionContextMenu, SIGNAL(triggered()), this, SLOT(runProjectContextMenu())); connect(m_cancelBuildAction, SIGNAL(triggered()), this, SLOT(cancelBuild())); connect(m_debugAction, SIGNAL(triggered()), this, SLOT(debugProject())); connect(m_dependenciesAction, SIGNAL(triggered()), this, SLOT(editDependencies())); @@ -1348,7 +1352,16 @@ void ProjectExplorerPlugin::cleanSession() void ProjectExplorerPlugin::runProject() { - Project *pro = startupProject(); + runProjectImpl(startupProject()); +} + +void ProjectExplorerPlugin::runProjectContextMenu() +{ + runProjectImpl(m_currentProject); +} + +void ProjectExplorerPlugin::runProjectImpl(Project *pro) +{ if (!pro) return; @@ -1434,10 +1447,14 @@ IRunConfigurationRunner *ProjectExplorerPlugin::findRunner(QSharedPointer<RunCon void ProjectExplorerPlugin::updateRunAction() { const Project *project = startupProject(); - const bool canRun = project && findRunner(project->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); + bool canRun = project && findRunner(project->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); const bool canDebug = project && !m_debuggingRunControl && findRunner(project->activeRunConfiguration(), ProjectExplorer::Constants::DEBUGMODE); const bool building = m_buildManager->isBuilding(); m_runAction->setEnabled(canRun && !building); + + canRun = m_currentProject && findRunner(m_currentProject->activeRunConfiguration(), ProjectExplorer::Constants::RUNMODE); + m_runActionContextMenu->setEnabled(canRun && !building); + m_debugAction->setEnabled(canDebug && !building); } diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 1d270226d1a..ff58e7ba8c6 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -156,6 +156,7 @@ private slots: void restoreSession(); void loadSession(const QString &session); void runProject(); + void runProjectContextMenu(); void savePersistentSettings(); void goToTaskWindow(); @@ -188,6 +189,7 @@ private slots: void currentModeChanged(Core::IMode *mode); private: + void runProjectImpl(Project *pro); void setCurrent(Project *project, QString filePath, Node *node); QStringList allFilesWithDependencies(Project *pro); @@ -223,6 +225,7 @@ private: QAction *m_cleanAction; QAction *m_cleanSessionAction; QAction *m_runAction; + QAction *m_runActionContextMenu; QAction *m_cancelBuildAction; QAction *m_debugAction; QAction *m_dependenciesAction; diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index ef745e69c90..e65ca54d099 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -57,6 +57,7 @@ const char * const BUILDCONFIGURATIONMENU = "ProjectExplorer.BuildConfigurationM const char * const CANCELBUILD = "ProjectExplorer.CancelBuild"; const char * const RUNCONFIGURATIONMENU = "ProjectExplorer.RunConfigurationMenu"; const char * const RUN = "ProjectExplorer.Run"; +const char * const RUNCONTEXTMENU = "ProjectExplorer.RunContextMenu"; const char * const STOP = "ProjectExplorer.Stop"; const char * const DEBUG = "ProjectExplorer.Debug"; const char * const DEPENDENCIES = "ProjectExplorer.Dependencies"; -- GitLab