From aa5ce7b95374baccf691bd00d544a43145a33b4d Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 11 Apr 2013 15:20:31 +0400 Subject: [PATCH] IDEA-103600 UNDO error: Whenever I entered ctrl+z, this always worked. Since the last 2 EAP versions it is problematic --- .../encoding/EncodingProjectManagerImpl.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java index 495d72e63178..826028cdd21b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/encoding/EncodingProjectManagerImpl.java @@ -210,17 +210,22 @@ public class EncodingProjectManagerImpl extends EncodingProjectManager { @Override public void setEncoding(@Nullable final VirtualFile virtualFileOrDir, @Nullable final Charset charset) { + Charset oldCharset; + if (charset == null) { - myMapping.remove(virtualFileOrDir); + oldCharset = myMapping.remove(virtualFileOrDir); } else { - myMapping.put(virtualFileOrDir, charset); + oldCharset = myMapping.put(virtualFileOrDir, charset); } - myModificationCount++; - if (virtualFileOrDir != null) { - virtualFileOrDir.setCharset(virtualFileOrDir.getBOM() == null ? charset : null); + + if (!Comparing.equal(oldCharset, charset)) { + myModificationCount++; + if (virtualFileOrDir != null) { + virtualFileOrDir.setCharset(virtualFileOrDir.getBOM() == null ? charset : null); + } + reloadAllFilesUnder(virtualFileOrDir); } - reloadAllFilesUnder(virtualFileOrDir); } private static void clearAndReload(@NotNull VirtualFile virtualFileOrDir) {