diff options
3 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/localenvironmentaspect.cpp b/src/plugins/projectexplorer/localenvironmentaspect.cpp index 7de671ec6f..24e3b4f372 100644 --- a/src/plugins/projectexplorer/localenvironmentaspect.cpp +++ b/src/plugins/projectexplorer/localenvironmentaspect.cpp @@ -97,7 +97,9 @@ LocalEnvironmentAspect::LocalEnvironmentAspect(RunConfiguration *parent) : LocalEnvironmentAspect *LocalEnvironmentAspect::create(RunConfiguration *parent) const { - return new LocalEnvironmentAspect(parent); + LocalEnvironmentAspect *result = new LocalEnvironmentAspect(parent); + result->setUserEnvironmentChanges(userEnvironmentChanges()); + return result; } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index de4f2af026..0d88239ab1 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -282,6 +282,10 @@ static bool actionLessThan(const QAction *action1, const QAction *action2) void RunSettingsWidget::aboutToShowAddMenu() { m_addRunMenu->clear(); + if (m_target->activeRunConfiguration()) { + m_addRunMenu->addAction(tr("&Clone Selected"), + this, SLOT(cloneRunConfiguration())); + } QList<IRunConfigurationFactory *> factories = ExtensionSystem::PluginManager::getObjects<IRunConfigurationFactory>(); @@ -322,6 +326,23 @@ void RunSettingsWidget::addRunConfiguration() m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1); } +void RunSettingsWidget::cloneRunConfiguration() +{ + RunConfiguration* activeRunConfiguration = m_target->activeRunConfiguration(); + IRunConfigurationFactory *factory = IRunConfigurationFactory::find(m_target, + activeRunConfiguration); + if (!factory) + return; + + RunConfiguration *newRc = factory->clone(m_target, activeRunConfiguration); + if (!newRc) + return; + + newRc->setDisplayName(activeRunConfiguration->displayName()); + m_target->addRunConfiguration(newRc); + m_target->setActiveRunConfiguration(newRc); +} + void RunSettingsWidget::removeRunConfiguration() { RunConfiguration *rc = m_target->activeRunConfiguration(); diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index c48d7d001d..f1cad07038 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -79,6 +79,7 @@ private slots: void currentRunConfigurationChanged(int index); void aboutToShowAddMenu(); void addRunConfiguration(); + void cloneRunConfiguration(); void removeRunConfiguration(); void activeRunConfigurationChanged(); void renameRunConfiguration(); |