mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use isFileModified instead of direct stamp comparison
This commit is contained in:
@@ -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();
|
||||
|
||||
+1
-8
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user