From f57a85115b2aa1ff6ff62c31e183c6604f232db6 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 22 Nov 2016 17:51:12 +0100 Subject: [PATCH] ensure in writeAction --- .../copy/CopyFilesOrDirectoriesHandler.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java b/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java index b791850c0434..3fbffc7207f5 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/copy/CopyFilesOrDirectoriesHandler.java @@ -290,7 +290,19 @@ public class CopyFilesOrDirectoriesHandler extends CopyHandlerDelegateBase { } if (newName == null) newName = directory.getName(); final PsiDirectory existing = targetDirectory.findSubdirectory(newName); - final PsiDirectory subdirectory = existing == null ? targetDirectory.createSubdirectory(newName) : existing; + final PsiDirectory subdirectory; + if (existing == null) { + String finalNewName = newName; + subdirectory = new WriteCommandAction(targetDirectory.getProject(), title) { + @Override + protected void run(@NotNull Result result) throws Throwable { + result.setResult(targetDirectory.createSubdirectory(finalNewName)); + } + }.execute().getResultObject(); + } + else { + subdirectory = existing; + } EncodingRegistry.doActionAndRestoreEncoding(directory.getVirtualFile(), (ThrowableComputable)() -> subdirectory.getVirtualFile());