From 50a89e36d618b969f1a4ca1f24b80677ec59edaa Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 3 Mar 2011 15:26:29 +0100 Subject: [PATCH] IDEA-50042 New Java/Groovy source keeps modified state after save --- .../com/intellij/psi/AddClassToFileTest.java | 18 ++++++++++++++++++ .../impl/FileDocumentManagerImpl.java | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/java/java-tests/testSrc/com/intellij/psi/AddClassToFileTest.java b/java/java-tests/testSrc/com/intellij/psi/AddClassToFileTest.java index b6b7d0bbf638..03f7c1111ae9 100644 --- a/java/java-tests/testSrc/com/intellij/psi/AddClassToFileTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/AddClassToFileTest.java @@ -1,5 +1,8 @@ package com.intellij.psi; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.fileEditor.impl.LoadTextUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.PlatformTestCase; import com.intellij.testFramework.PsiTestCase; @@ -16,4 +19,19 @@ public class AddClassToFileTest extends PsiTestCase{ PsiTestUtil.checkFileStructure(file); } + + public void testFileModified() throws Exception { + VirtualFile root = PsiTestUtil.createTestProjectStructure(myProject, myModule, myFilesToDelete); + VirtualFile pkg = root.createChildDirectory(this, "foo"); + PsiDirectory dir = myPsiManager.findDirectory(pkg); + String text = "package foo;\n\nclass A {}"; + PsiElement created = dir.add(PsiFileFactory.getInstance(getProject()).createFileFromText("A.java", text)); + VirtualFile virtualFile = created.getContainingFile().getVirtualFile(); + String fileText = LoadTextUtil.loadText(virtualFile).toString(); + assertEquals(text, fileText); + + Document doc = FileDocumentManager.getInstance().getDocument(virtualFile); + assertFalse(FileDocumentManager.getInstance().isDocumentUnsaved(doc)); + assertFalse(FileDocumentManager.getInstance().isFileModified(virtualFile)); + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java index 9f5597270abb..594a97a5baa7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java @@ -367,7 +367,7 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Appl public boolean isFileModified(@NotNull VirtualFile file) { final Document doc = getCachedDocument(file); - return doc != null && doc.getModificationStamp() != file.getModificationStamp(); + return doc != null && isDocumentUnsaved(doc); } public void addFileDocumentSynchronizationVetoer(@NotNull FileDocumentSynchronizationVetoListener vetoer) {