mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 14:12:10 +02:00
Bug 547174 - Clean core project doesn't always show active in console
- order build config names so when clean for a project goes through the build configs, it finds the active one last and thus it will appear in the CDT build console - do this in CoreBuildLaunchbarTracker.setActiveBuildConfig() - do this in CBuildConfiguration.setActive() - do this in CoreBuildLaunchConfigDelegate.buildForLaunch() Change-Id: I379d6c9ba298f02cbc75d16e9941527cd2f9f45c
This commit is contained in:
parent
949dd8a45f
commit
86bfd4de7e
3 changed files with 50 additions and 4 deletions
|
@ -29,9 +29,11 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -284,6 +286,18 @@ public abstract class CBuildConfiguration extends PlatformObject implements ICBu
|
|||
CoreModel m = CoreModel.getDefault();
|
||||
synchronized (m) {
|
||||
IProjectDescription projectDesc = project.getDescription();
|
||||
IBuildConfiguration[] bconfigs = project.getBuildConfigs();
|
||||
Set<String> names = new LinkedHashSet<>();
|
||||
for (IBuildConfiguration bconfig : bconfigs) {
|
||||
names.add(bconfig.getName());
|
||||
}
|
||||
// must add default config name as it may not be in build config list
|
||||
names.add(IBuildConfiguration.DEFAULT_CONFIG_NAME);
|
||||
// ensure active config is last in list so clean build will clean
|
||||
// active config last and this will be left in build console for user to see
|
||||
names.remove(config.getName());
|
||||
names.add(config.getName());
|
||||
|
||||
projectDesc.setActiveBuildConfig(config.getName());
|
||||
project.setDescription(projectDesc, monitor);
|
||||
}
|
||||
|
|
|
@ -12,13 +12,16 @@ package org.eclipse.cdt.debug.core.launch;
|
|||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.build.ICBuildConfiguration;
|
||||
import org.eclipse.cdt.core.build.ICBuildConfiguration2;
|
||||
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
|
||||
import org.eclipse.cdt.core.build.IToolChain;
|
||||
import org.eclipse.cdt.core.build.IToolChainManager;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
|
||||
import org.eclipse.cdt.debug.internal.core.InternalDebugCoreMessages;
|
||||
|
@ -129,10 +132,24 @@ public class CoreBuildLaunchBarTracker implements ILaunchBarListener {
|
|||
|
||||
if (buildConfig != null
|
||||
&& !buildConfig.getBuildConfiguration().equals(finalProject.getActiveBuildConfig())) {
|
||||
// set it as active
|
||||
IProjectDescription desc = finalProject.getDescription();
|
||||
desc.setActiveBuildConfig(buildConfig.getBuildConfiguration().getName());
|
||||
finalProject.setDescription(desc, monitor);
|
||||
CoreModel m = CoreModel.getDefault();
|
||||
synchronized (m) {
|
||||
// set it as active
|
||||
IProjectDescription desc = finalProject.getDescription();
|
||||
IBuildConfiguration[] configs = finalProject.getBuildConfigs();
|
||||
Set<String> names = new LinkedHashSet<>();
|
||||
for (IBuildConfiguration config : configs) {
|
||||
names.add(config.getName());
|
||||
}
|
||||
// must add default config name as it may not be in build config list
|
||||
names.add(IBuildConfiguration.DEFAULT_CONFIG_NAME);
|
||||
// ensure active config is last in list so clean build will clean
|
||||
// active config last and this will be left in build console for user to see
|
||||
names.remove(buildConfig.getBuildConfiguration().getName());
|
||||
names.add(buildConfig.getBuildConfiguration().getName());
|
||||
desc.setActiveBuildConfig(buildConfig.getBuildConfiguration().getName());
|
||||
finalProject.setDescription(desc, monitor);
|
||||
}
|
||||
// notify the active build config that it is active
|
||||
((ICBuildConfiguration2) buildConfig).setActive();
|
||||
}
|
||||
|
|
|
@ -12,7 +12,9 @@ package org.eclipse.cdt.debug.core.launch;
|
|||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.cdt.core.build.ICBuildConfiguration;
|
||||
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
|
||||
|
@ -22,6 +24,7 @@ import org.eclipse.cdt.core.model.CoreModel;
|
|||
import org.eclipse.cdt.core.model.IBinary;
|
||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||
import org.eclipse.cdt.debug.internal.core.InternalDebugCoreMessages;
|
||||
import org.eclipse.core.resources.IBuildConfiguration;
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.resources.IProjectDescription;
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
|
@ -143,6 +146,18 @@ public abstract class CoreBuildLaunchConfigDelegate extends LaunchConfigurationT
|
|||
CoreModel m = CoreModel.getDefault();
|
||||
synchronized (m) {
|
||||
IProjectDescription desc = project.getDescription();
|
||||
IBuildConfiguration[] bconfigs = project.getBuildConfigs();
|
||||
Set<String> names = new LinkedHashSet<>();
|
||||
for (IBuildConfiguration bconfig : bconfigs) {
|
||||
names.add(bconfig.getName());
|
||||
}
|
||||
// must add default config name as it may not be in build config list
|
||||
names.add(IBuildConfiguration.DEFAULT_CONFIG_NAME);
|
||||
// ensure active config is last in list so clean build will clean
|
||||
// active config last and this will be left in build console for user to see
|
||||
names.remove(buildConfig.getBuildConfiguration().getName());
|
||||
names.add(buildConfig.getBuildConfiguration().getName());
|
||||
|
||||
desc.setActiveBuildConfig(buildConfig.getBuildConfiguration().getName());
|
||||
project.setDescription(desc, monitor);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue