diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt index 38eaa1e09c1..8df70c67eb0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsHandler.kt @@ -113,7 +113,7 @@ class MoveKotlinDeclarationsHandler : MoveHandlerDelegate() { else -> null } val initialTargetDirectory = MoveFilesOrDirectoriesUtil.resolveToDirectory(project, initialTargetElement) - val dialog = KotlinAwareMoveFilesOrDirectoriesDialog(project) { + val dialog = KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory) { invokeMoveFilesOrDirectoriesRefactoring(it, project, elements, initialTargetDirectory, callback) } dialog.setData(elements, initialTargetDirectory, "refactoring.moveFile") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt index 58fe5c1e5d1..f5191fd463c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt @@ -42,6 +42,7 @@ import javax.swing.JComponent class KotlinAwareMoveFilesOrDirectoriesDialog( private val project: Project, + private val initialDirectory: PsiDirectory?, private val callback: (KotlinAwareMoveFilesOrDirectoriesDialog?) -> Unit ) : DialogWrapper(project, true) { companion object { @@ -163,7 +164,12 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( project.executeCommand(RefactoringBundle.message("move.title"), null) { runWriteAction { - val directoryName = targetDirectoryField.childComponent.text.replace(File.separatorChar, '/') + val directoryName = targetDirectoryField.childComponent.text.replace(File.separatorChar, '/').let { + when { + it.startsWith(".") -> (initialDirectory?.virtualFile?.path ?: "") + "/" + it + else -> it + } + } try { targetDirectory = DirectoryUtil.mkdirs(PsiManager.getInstance(project), directoryName) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt index 8b53495049f..1e8759398f6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt @@ -123,7 +123,7 @@ fun moveFilesOrDirectories( return } - with(KotlinAwareMoveFilesOrDirectoriesDialog(project, ::doRun)) { + with(KotlinAwareMoveFilesOrDirectoriesDialog(project, initialTargetDirectory, ::doRun)) { setData(elements, initialTargetDirectory, "refactoring.moveFile") show() }