diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java index 9e4dc84a4b0..07b3cf15899 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java @@ -105,7 +105,6 @@ public class DiscoveryOptionsBlock extends AbstractCOptionPage { private String initialBuilderParserId = null; private Map providerParsers = new HashMap(); private String initialProviderParserId = null; - private boolean fCreatePathContainer = false; public DiscoveryOptionsBlock() { super(MakeUIPlugin.getResourceString(DIALOG_TITLE)); @@ -131,7 +130,6 @@ public class DiscoveryOptionsBlock extends AbstractCOptionPage { fInitialized = false; fBuildInfo = MakeCorePlugin.createScannerConfigBuildInfo(fPrefs, ScannerConfigBuilder.BUILDER_ID, true); } - fCreatePathContainer = true; } else { fBuildInfo = MakeCorePlugin.createScannerConfigBuildInfo(fPrefs, ScannerConfigBuilder.BUILDER_ID, false); } @@ -159,11 +157,13 @@ public class DiscoveryOptionsBlock extends AbstractCOptionPage { IProject project = getContainer().getProject(); if (project != null) { buildInfo = MakeCorePlugin.createScannerConfigBuildInfo(project, ScannerConfigBuilder.BUILDER_ID); - if (fCreatePathContainer) { + if (isScannerConfigDiscoveryEnabled()) { createDiscoveredPathContainer(project); - // create a new discovered scanner config store - MakeCorePlugin.getDefault().getDiscoveryManager().removeDiscoveredInfo(project); + } else { + removeDiscoveredPathContainer(project); } + // create a new discovered scanner config store + MakeCorePlugin.getDefault().getDiscoveryManager().removeDiscoveredInfo(project); } else { buildInfo = MakeCorePlugin.createScannerConfigBuildInfo(fPrefs, ScannerConfigBuilder.BUILDER_ID, false); } @@ -209,6 +209,20 @@ public class DiscoveryOptionsBlock extends AbstractCOptionPage { } } + private void removeDiscoveredPathContainer(IProject project) throws CModelException { + IPathEntry container = CoreModel.newContainerEntry(DiscoveredPathContainer.CONTAINER_ID); + ICProject cProject = CoreModel.getDefault().create(project); + if (cProject != null) { + IPathEntry[] entries = cProject.getRawPathEntries(); + List newEntries = new ArrayList(Arrays.asList(entries)); + if (newEntries.contains(container)) { + newEntries.remove(container); + cProject.setRawPathEntries((IPathEntry[])newEntries.toArray(new IPathEntry[newEntries.size()]), + new NullProgressMonitor()); + } + } + } + /* * (non-Javadoc) *