Backported fix for bug 184860.
diff --git a/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF b/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF index 28e1415..810e7e4 100644 --- a/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF +++ b/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.core.filebuffers; singleton:=true -Bundle-Version: 3.2.1.qualifier +Bundle-Version: 3.2.2.qualifier Bundle-Activator: org.eclipse.core.internal.filebuffers.FileBuffersPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin
diff --git a/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java b/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java index edcf50b..a664e5e 100644 --- a/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java +++ b/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java
@@ -128,9 +128,10 @@ if (delta != null && fIsInstalled) { SafeFileChange fileChange= null; + final int flags= delta.getFlags(); switch (delta.getKind()) { case IResourceDelta.CHANGED: - if ((IResourceDelta.ENCODING & delta.getFlags()) != 0) { + if ((IResourceDelta.ENCODING & flags) != 0) { if (!isDisconnected() && !fCanBeSaved && isSynchronized()) { fileChange= new SafeFileChange() { protected void execute() throws Exception { @@ -139,8 +140,8 @@ }; } } - if (fileChange == null && (IResourceDelta.CONTENT & delta.getFlags()) != 0) { - if (!isDisconnected() && !fCanBeSaved && !isSynchronized()) { + if (fileChange == null && (IResourceDelta.CONTENT & flags) != 0) { + if (!isDisconnected() && !fCanBeSaved && (!isSynchronized() || (IResourceDelta.REPLACED & flags) != 0)) { fileChange= new SafeFileChange() { protected void execute() throws Exception { handleFileContentChanged(false); @@ -150,7 +151,7 @@ } break; case IResourceDelta.REMOVED: - if ((IResourceDelta.MOVED_TO & delta.getFlags()) != 0) { + if ((IResourceDelta.MOVED_TO & flags) != 0) { final IPath path= delta.getMovedToPath(); fileChange= new SafeFileChange() { protected void execute() throws Exception {