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 44a5d3a40da..f62712e70a2 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
@@ -44,17 +44,6 @@ public class DeltaProcessor {
// Hold on the element bein renamed.
ICElement movedFromElement = null;
- /**
- * Generic processing for elements with changed contents:
- * - The element is closed such that any subsequent accesses will re-open
- * the element reflecting its new structure.
- *
- An entry is made in the delta reporting a content change (K_CHANGE with F_CONTENT flag set).
- *
- */
- protected void contentChanged(ICElement element, IResourceDelta delta) {
- fCurrentDelta.changed(element, ICElementDelta.F_CONTENT);
- }
-
/**
* Creates the create corresponding to this resource.
* Returns null if none was found.
@@ -206,8 +195,29 @@ public class DeltaProcessor {
}
}
+ /*
+ * Closes the given element, which removes it from the cache of open elements.
+ */
+ private void close(Openable element) {
+ try {
+ element.close();
+ } catch (CModelException e) {
+ // do nothing
+ }
+ }
+
+ /**
+ * Generic processing for elements with changed contents:
+ * - The element is closed such that any subsequent accesses will re-open
+ * the element reflecting its new structure.
+ *
- An entry is made in the delta reporting a content change (K_CHANGE with F_CONTENT flag set).
+ *
+ */
protected void elementChanged(ICElement element, IResourceDelta delta) {
- fCurrentDelta.changed(element, ICElementDelta.F_CONTENT);
+ if (element instanceof Openable) {
+ close((Openable)element);
+ }
+ fCurrentDelta.changed(element, ICElementDelta.F_CONTENT);
}
/**
@@ -403,7 +413,7 @@ public class DeltaProcessor {
if ((flags & IResourceDelta.CONTENT) != 0) {
// content has changed
if (element != null) {
- contentChanged(element, delta);
+ elementChanged(element, delta);
updateIndexAddResource(element, delta);
}
} else if (resource.getType() == IResource.PROJECT) {