From 08ed93554cd3ac8e4250994b19ad107fe0b27309 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 3 Mar 2011 15:34:47 +0100 Subject: [PATCH] use isFileModified instead of direct stamp comparison --- .../openapi/vcs/changes/PsiChangeTracker.java | 4 +--- .../openapi/vcs/impl/VcsFileStatusProvider.java | 16 ++++------------ .../actions/ActionOnSelectedElement.java | 9 +-------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/vcs/changes/PsiChangeTracker.java b/platform/lang-impl/src/com/intellij/openapi/vcs/changes/PsiChangeTracker.java index 0b34843d8dbc..cf575a75eb16 100644 --- a/platform/lang-impl/src/com/intellij/openapi/vcs/changes/PsiChangeTracker.java +++ b/platform/lang-impl/src/com/intellij/openapi/vcs/changes/PsiChangeTracker.java @@ -17,7 +17,6 @@ package com.intellij.openapi.vcs.changes; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.impl.LoadTextUtil; import com.intellij.openapi.project.Project; @@ -145,8 +144,7 @@ public class PsiChangeTracker { return null; } - final Document document = FileDocumentManager.getInstance().getCachedDocument(file); - if (document != null && document.getModificationStamp() != file.getModificationStamp()) { + if (FileDocumentManager.getInstance().isFileModified(file)) { return ApplicationManager.getApplication().runReadAction(new Computable() { public String compute() { return LoadTextUtil.loadText(file).toString(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/VcsFileStatusProvider.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/VcsFileStatusProvider.java index 0982ebbbf207..085559648559 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/VcsFileStatusProvider.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/VcsFileStatusProvider.java @@ -100,14 +100,7 @@ public class VcsFileStatusProvider implements FileStatusProvider, VcsBaseContent private static boolean isDocumentModified(VirtualFile virtualFile) { if (virtualFile.isDirectory()) return false; - final FileDocumentManager fdm = FileDocumentManager.getInstance(); - final Document editorDocument = fdm.getCachedDocument(virtualFile); - - if (editorDocument != null && editorDocument.getModificationStamp() != virtualFile.getModificationStamp()) { - return fdm.isDocumentUnsaved(editorDocument); - } - - return false; + return FileDocumentManager.getInstance().isFileModified(virtualFile); } public void refreshFileStatusFromDocument(final VirtualFile file, final Document doc) { @@ -115,10 +108,10 @@ public class VcsFileStatusProvider implements FileStatusProvider, VcsBaseContent LOG.debug("refreshFileStatusFromDocument: file.getModificationStamp()=" + file.getModificationStamp() + ", document.getModificationStamp()=" + doc.getModificationStamp()); } FileStatus cachedStatus = myFileStatusManager.getCachedStatus(file); - if (cachedStatus == null || cachedStatus == FileStatus.NOT_CHANGED || file.getModificationStamp() == doc.getModificationStamp()) { + if (cachedStatus == null || cachedStatus == FileStatus.NOT_CHANGED || !isDocumentModified(file)) { final AbstractVcs vcs = myVcsManager.getVcsFor(file); if (vcs == null) return; - if (cachedStatus == FileStatus.MODIFIED && file.getModificationStamp() == doc.getModificationStamp()) { + if (cachedStatus == FileStatus.MODIFIED && !isDocumentModified(file)) { if (!((ReadonlyStatusHandlerImpl) ReadonlyStatusHandlerImpl.getInstance(myProject)).getState().SHOW_DIALOG) { RollbackEnvironment rollbackEnvironment = vcs.getRollbackEnvironment(); if (rollbackEnvironment != null) { @@ -157,8 +150,7 @@ public class VcsFileStatusProvider implements FileStatusProvider, VcsBaseContent return null; } - final Document document = FileDocumentManager.getInstance().getCachedDocument(file); - if (document != null && document.getModificationStamp() != file.getModificationStamp()) { + if (isDocumentModified(file)) { return ApplicationManager.getApplication().runReadAction(new Computable() { public String compute() { return LoadTextUtil.loadText(file).toString(); diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java index 2e628e755729..d936b86f1289 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/actions/ActionOnSelectedElement.java @@ -23,7 +23,6 @@ import com.intellij.cvsSupport2.cvsstatuses.CvsStatusProvider; import com.intellij.cvsSupport2.util.CvsVfsUtil; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vcs.actions.VcsContext; @@ -131,13 +130,7 @@ public abstract class ActionOnSelectedElement extends AbstractAction { final boolean[] result = new boolean[]{false}; ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { - Document document = FileDocumentManager.getInstance().getCachedDocument(file); - if (document == null) { - result[0] = false; - } - else { - result[0] = document.getModificationStamp() != file.getModificationStamp(); - } + result[0] = FileDocumentManager.getInstance().isFileModified(file); } }); return result[0];