diff options
Diffstat (limited to 'core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java')
-rw-r--r-- | core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java index 8cd16bfc7b3..d8d2a6b173c 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java @@ -620,39 +620,36 @@ public class CProject extends Openable implements ICProject { return new ArrayList(0); } - /** - * Add any output paths which don't overlay paths already in the list. - */ - private List addOutputOnlyRoots(List sourceRoots) { - IResource[] resources; - ArrayList result = new ArrayList(sourceRoots.size()); + protected boolean computeChildren(OpenableInfo info, IResource res) throws CModelException { + List sourceRoots = computeSourceRoots(); + List children = new ArrayList(sourceRoots.size()); + children.addAll(sourceRoots); + + // Now look for output folders try { - resources = getProject().members(); + IResource[] resources = getProject().members(); for (int i = 0; i < resources.length; i++) { - if (resources[i].getType() == IResource.FOLDER) { + IResource child = resources[i]; + if (child.getType() == IResource.FOLDER) { boolean found = false; - for (int j = 0; j < sourceRoots.size(); j++) { - if (((ICElement) sourceRoots.get(j)).getResource().getProjectRelativePath().isPrefixOf(resources[i].getProjectRelativePath())) { + for (Iterator iter = sourceRoots.iterator(); iter.hasNext();) { + ISourceRoot sourceRoot = (ISourceRoot)iter.next(); + if (sourceRoot.isOnSourceEntry(child)) { found = true; break; } } - if (!found) { - result.add(new CContainer(this, resources[i])); - } + + // Not in source folder, check if it's a container on output entry + if (!found && isOnOutputEntry(child)) + children.add(new CContainer(this, child)); } } } catch (CoreException e) { // ignore } - result.addAll(sourceRoots); - return result; - } - - protected boolean computeChildren(OpenableInfo info, IResource res) throws CModelException { - List list = computeSourceRoots(); - list = addOutputOnlyRoots(list); - info.setChildren(list); + + info.setChildren(children); if (info instanceof CProjectInfo) { CProjectInfo pinfo = (CProjectInfo)info; pinfo.setNonCResources(null); |