From 3ec968e251e049cdc7c7fc2bf913fd0789dea773 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Thu, 20 Oct 2016 00:25:41 +0300 Subject: [PATCH] PY-21147 Don't use targetContainer param of doMove for destination path It seems to be specified only when Move refactoring is launched outside of the editor (according to MoveHandler's implementation) and this refactoring doesn't support such way to run it anyway --- .../move/PyMoveSymbolDelegate.java | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/python/src/com/jetbrains/python/refactoring/move/PyMoveSymbolDelegate.java b/python/src/com/jetbrains/python/refactoring/move/PyMoveSymbolDelegate.java index cea549b75595..e49d4a4d6f27 100644 --- a/python/src/com/jetbrains/python/refactoring/move/PyMoveSymbolDelegate.java +++ b/python/src/com/jetbrains/python/refactoring/move/PyMoveSymbolDelegate.java @@ -79,14 +79,7 @@ public class PyMoveSymbolDelegate extends MoveHandlerDelegate { @Override public void doMove(Project project, PsiElement[] elements, @Nullable PsiElement targetContainer, @Nullable MoveCallback callback) { - String initialPath = null; - if (targetContainer instanceof PsiFile) { - initialPath = StringUtil.notNullize(PyPsiUtils.getContainingFilePath(targetContainer)); - } - if (initialPath == null) { - initialPath = StringUtil.notNullize(PyPsiUtils.getContainingFilePath(elements[0])); - } - + final String initialPath = StringUtil.notNullize(PyPsiUtils.getContainingFilePath(elements[0])); final BaseRefactoringProcessor processor; if (isMovableLocalFunctionOrMethod(elements[0])) { final PyFunction function = (PyFunction)elements[0]; @@ -137,27 +130,23 @@ public class PyMoveSymbolDelegate extends MoveHandlerDelegate { @Nullable DataContext dataContext, @Nullable PsiReference reference, @Nullable Editor editor) { - PsiFile targetContainer = null; - if (editor != null) { - final Document document = editor.getDocument(); - targetContainer = PsiDocumentManager.getInstance(project).getPsiFile(document); - if (targetContainer instanceof PyFile && selectionSpansMultipleLines(editor)) { - final List moduleMembers = collectAllMovableElementsInSelection(editor, (PyFile)targetContainer); - if (moduleMembers.isEmpty()) { - showBadSelectionErrorHint(project, editor); - } - else { - doMove(project, ContainerUtil.findAllAsArray(moduleMembers, PsiNamedElement.class), targetContainer, null); - } - return true; + final PsiFile currentFile = element.getContainingFile(); + if (editor != null && currentFile instanceof PyFile && selectionSpansMultipleLines(editor)) { + final List moduleMembers = collectAllMovableElementsInSelection(editor, (PyFile)currentFile); + if (moduleMembers.isEmpty()) { + showBadSelectionErrorHint(project, editor); + } + else { + doMove(project, ContainerUtil.findAllAsArray(moduleMembers, PsiNamedElement.class), null, null); } + return true; } // Fallback to the old way to select single element to move final PsiNamedElement e = PyMoveModuleMembersHelper.extractNamedElement(element); if (e != null && PyMoveModuleMembersHelper.hasMovableElementType(e)) { if (PyMoveModuleMembersHelper.isMovableModuleMember(e) || isMovableLocalFunctionOrMethod(e)) { - doMove(project, new PsiElement[]{e}, targetContainer, null); + doMove(project, new PsiElement[]{e}, null, null); } else { showBadSelectionErrorHint(project, editor); -- 2.32.0