use isFileModified instead of direct stamp comparison

This commit is contained in:
peter
2011-03-03 17:27:33 +01:00
parent 569c751778
commit 08ed93554c
3 changed files with 6 additions and 23 deletions
@@ -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<String>() {
public String compute() {
return LoadTextUtil.loadText(file).toString();
@@ -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<String>() {
public String compute() {
return LoadTextUtil.loadText(file).toString();
@@ -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];