From 5430f8b5ac9049c93cd9d80c0f76b459dfd20b20 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 11 Apr 2017 16:14:06 +0200 Subject: [PATCH] ensure prepareMovedFile invoked after move directory --- .../MoveFilesOrDirectoriesProcessor.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java index 511316f8ea35..196fb8d19098 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/MoveFilesOrDirectoriesProcessor.java @@ -160,10 +160,11 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor { final RefactoringElementListener elementListener = getTransaction().getElementListener(element); if (element instanceof PsiDirectory) { + if (mySearchForReferences) encodeDirectoryFiles(element); + MoveFilesOrDirectoriesUtil.doMoveDirectory((PsiDirectory)element, myNewParent); for (PsiElement psiElement : element.getChildren()) { processDirectoryFiles(movedFiles, oldToNewMap, psiElement); } - MoveFilesOrDirectoriesUtil.doMoveDirectory((PsiDirectory)element, myNewParent); } else if (element instanceof PsiFile) { final PsiFile movedFile = (PsiFile)element; @@ -239,10 +240,20 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor { return data; } - private void processDirectoryFiles(List movedFiles, Map oldToNewMap, PsiElement psiElement) { + private static void encodeDirectoryFiles(PsiElement psiElement) { + if (psiElement instanceof PsiFile) { + FileReferenceContextUtil.encodeFileReferences(psiElement); + } + else if (psiElement instanceof PsiDirectory) { + for (PsiElement element : psiElement.getChildren()) { + encodeDirectoryFiles(element); + } + } + } + + private static void processDirectoryFiles(List movedFiles, Map oldToNewMap, PsiElement psiElement) { if (psiElement instanceof PsiFile) { final PsiFile movedFile = (PsiFile)psiElement; - if (mySearchForReferences) FileReferenceContextUtil.encodeFileReferences(psiElement); MoveFileHandler.forElement(movedFile).prepareMovedFile(movedFile, movedFile.getParent(), oldToNewMap); movedFiles.add(movedFile); }