From aff91cc3f3b04c6251a2d26ccdca63fc2c6a5f87 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 27 Aug 2015 13:22:33 +0300 Subject: [PATCH] diff: enable "Clear Read-Only flag" dialog in Diff/MergeApplication --- .../diff-impl/src/com/intellij/diff/util/DiffUtil.java | 10 ++++++---- .../intellij/openapi/vfs/ReadonlyStatusHandler.java | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index 7eba1ed668b7..8a7b65eb2ce1 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -56,6 +56,7 @@ import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.ui.DialogWrapperDialog; import com.intellij.openapi.ui.WindowWrapper; import com.intellij.openapi.util.*; @@ -797,15 +798,16 @@ public class DiffUtil { @CalledInAwt public static boolean makeWritable(@Nullable Project project, @NotNull Document document) { if (document.isWritable()) return true; - if (project == null) return false; - return ReadonlyStatusHandler.ensureDocumentWritable(project, document); + VirtualFile file = FileDocumentManager.getInstance().getFile(document); + if (file == null) return false; + return makeWritable(project, file); } @CalledInAwt public static boolean makeWritable(@Nullable Project project, @NotNull VirtualFile file) { if (file.isWritable()) return true; - if (project == null) return false; - return ReadonlyStatusHandler.ensureFilesWritable(project, file); + if (project == null) project = ProjectManager.getInstance().getDefaultProject(); + return !ReadonlyStatusHandler.getInstance(project).ensureFilesWritable(file).hasReadonlyFiles(); } // diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java index c5bd39e7a905..987681a4fd35 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/ReadonlyStatusHandler.java @@ -63,7 +63,7 @@ public abstract class ReadonlyStatusHandler { return ensureFilesWritable(VfsUtilCore.toVirtualFileArray(files)); } - public static ReadonlyStatusHandler getInstance(Project project) { + public static ReadonlyStatusHandler getInstance(@NotNull Project project) { return ServiceManager.getService(project, ReadonlyStatusHandler.class); }