diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index f223e6b825b..ad806717ce2 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,10 @@ +2004-08-18 Alain Magloire + + The DeltaProcessor should update the sourceRoot also if + sourceRoot == ICProject + + * model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java + 2004-08-18 Chris Wiebe fix for bug #71353 diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java index 88fd2f8fea2..7ccf08e7db0 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/DeltaProcessor.java @@ -464,9 +464,23 @@ public class DeltaProcessor { ((CModelInfo)info).setNonCResources(null); fCurrentDelta.addResourceDelta(delta); return; - case ICElement.C_PROJECT: + case ICElement.C_PROJECT: { ((CProjectInfo)info).setNonCResources(null); + // deal with project == sourceroot. For that case the parent could have been the sourceroot + // so we must update the sourceroot nonCResource array also. + ICProject cproject = (ICProject)parent; + ISourceRoot[] roots = cproject.getAllSourceRoots(); + for (int i = 0; i < roots.length; i++) { + IResource r = roots[i].getResource(); + if (r instanceof IProject) { + CElementInfo cinfo = (CElementInfo) CModelManager.getDefault().peekAtInfo(roots[i]); + if (cinfo instanceof CContainerInfo) { + ((CContainerInfo)cinfo).setNonCResources(null); + } + } + } break; + } case ICElement.C_CCONTAINER: ((CContainerInfo)info).setNonCResources(null); break;