mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-05 16:56:04 +02:00
Fix to the DeltaProcessor.
This commit is contained in:
parent
9e35ee6963
commit
61799d7c74
1 changed files with 27 additions and 20 deletions
|
@ -172,6 +172,10 @@ public class DeltaProcessor {
|
|||
}
|
||||
}
|
||||
|
||||
protected void elementChanged(ICElement element, IResourceDelta delta) {
|
||||
fCurrentDelta.changed(element, ICElementDelta.F_CONTENT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic processing for a removed element:<ul>
|
||||
* <li>Close the element, removing its structure from the cache
|
||||
|
@ -261,7 +265,6 @@ public class DeltaProcessor {
|
|||
|
||||
try {
|
||||
ICElement root = (ICModel)CModelManager.getDefault().getCModel();
|
||||
currentElement = null;
|
||||
|
||||
/*
|
||||
try {
|
||||
|
@ -294,7 +297,7 @@ public class DeltaProcessor {
|
|||
for (int i = 0; i < deltas.length; i++) {
|
||||
IResourceDelta delta = deltas[i];
|
||||
fCurrentDelta = new CElementDelta(root);
|
||||
traverseDelta(delta); // traverse delta
|
||||
traverseDelta(root, delta); // traverse delta
|
||||
translatedDeltas[i] = fCurrentDelta;
|
||||
}
|
||||
return filterRealDeltas(translatedDeltas);
|
||||
|
@ -309,29 +312,33 @@ public class DeltaProcessor {
|
|||
* If it is not a resource on the classpath, it will be added as a non-java
|
||||
* resource by the sender of this method.
|
||||
*/
|
||||
protected void traverseDelta(IResourceDelta delta) {
|
||||
protected void traverseDelta(ICElement parent, IResourceDelta delta) {
|
||||
try {
|
||||
if (!updateCurrentDeltaAndIndex(delta)) {
|
||||
nonCResourcesChanged(delta);
|
||||
ICElement current = updateCurrentDeltaAndIndex(delta);
|
||||
if (current == null) {
|
||||
nonCResourcesChanged(parent, delta);
|
||||
} else {
|
||||
parent = current;
|
||||
}
|
||||
} catch (CModelException e) {
|
||||
}
|
||||
IResourceDelta [] children = delta.getAffectedChildren();
|
||||
for (int i = 0; i < children.length; i++) {
|
||||
traverseDelta(children[i]);
|
||||
traverseDelta(parent, children[i]);
|
||||
}
|
||||
}
|
||||
|
||||
protected void nonCResourcesChanged(IResourceDelta delta) {
|
||||
fCurrentDelta.addResourceDelta(delta);
|
||||
IResource res = delta.getResource();
|
||||
if (res != null) {
|
||||
ICElement celem = createElement(res.getParent());
|
||||
if (celem instanceof CContainer) {
|
||||
CElementInfo info = ((CContainer)celem).getElementInfo();
|
||||
if (info instanceof CContainerInfo) {
|
||||
((CContainerInfo)info).setNonCResources(null);
|
||||
}
|
||||
protected void nonCResourcesChanged(ICElement parent, IResourceDelta delta) {
|
||||
CElementDelta elementDelta = fCurrentDelta.find(parent);
|
||||
if (elementDelta == null) {
|
||||
fCurrentDelta.changed(parent, ICElementDelta.F_CONTENT);
|
||||
elementDelta = fCurrentDelta;
|
||||
}
|
||||
elementDelta.addResourceDelta(delta);
|
||||
if (parent instanceof CContainer) {
|
||||
CElementInfo info = ((CContainer)parent).getElementInfo();
|
||||
if (info instanceof CContainerInfo) {
|
||||
((CContainerInfo)info).setNonCResources(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -342,7 +349,7 @@ public class DeltaProcessor {
|
|||
* Returns whether the children of the given delta must be processed.
|
||||
* @throws a CModelException if the delta doesn't correspond to a c element of the given type.
|
||||
*/
|
||||
private boolean updateCurrentDeltaAndIndex(IResourceDelta delta) throws CModelException {
|
||||
private ICElement updateCurrentDeltaAndIndex(IResourceDelta delta) throws CModelException {
|
||||
|
||||
IResource resource = delta.getResource();
|
||||
ICElement element = createElement(resource);
|
||||
|
@ -388,14 +395,14 @@ public class DeltaProcessor {
|
|||
elementAdded(element, delta);
|
||||
}
|
||||
} else if (element != null) {
|
||||
elementAdded(element, delta);
|
||||
elementChanged(element, delta);
|
||||
}
|
||||
} else if (element != null) {
|
||||
elementAdded(element, delta);
|
||||
elementChanged(element, delta);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return element != null;
|
||||
return element;
|
||||
}
|
||||
|
||||
protected void updateIndexAddResource(ICElement element, IResourceDelta delta) {
|
||||
|
|
Loading…
Add table
Reference in a new issue