From 96a26d4c354ecd2e2c6cff3e91bb3521d4d5f0bf Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 7 Dec 2010 13:26:59 +0300 Subject: [PATCH] copy to the same location should be possible (IDEA-62498) [spleaner] --- .../ide/projectView/impl/ProjectViewDropTarget.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java index b5b451796619..a375cc51aba2 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewDropTarget.java @@ -342,8 +342,11 @@ class ProjectViewDropTarget implements DnDNativeTarget { protected boolean canDrop(@NotNull final TreeNode[] sourceNodes, @Nullable final TreeNode targetNode) { final PsiElement[] sourceElements = getPsiElements(sourceNodes); final PsiElement targetElement = getPsiElement(targetNode); - return (targetElement instanceof PsiDirectoryContainer || targetElement instanceof PsiDirectory) && - CopyHandler.canCopy(sourceElements); + final PsiFile containingFile = targetElement.getContainingFile(); + final boolean isTargetAcceptable = targetElement instanceof PsiDirectoryContainer || + targetElement instanceof PsiDirectory || + (containingFile != null && containingFile.getContainingDirectory() != null); + return isTargetAcceptable && CopyHandler.canCopy(sourceElements); } public void doDrop(@NotNull final TreeNode[] sourceNodes, @NotNull final TreeNode targetNode) { @@ -358,8 +361,12 @@ class ProjectViewDropTarget implements DnDNativeTarget { final PsiDirectoryContainer directoryContainer = (PsiDirectoryContainer)targetElement; final PsiDirectory[] psiDirectories = directoryContainer.getDirectories(); psiDirectory = psiDirectories.length != 0 ? psiDirectories[0] : null; - } else { + } else if (targetElement instanceof PsiDirectory) { psiDirectory = (PsiDirectory)targetElement; + } else { + final PsiFile containingFile = targetElement.getContainingFile(); + LOG.assertTrue(containingFile != null); + psiDirectory = containingFile.getContainingDirectory(); } CopyHandler.doCopy(sourceElements, psiDirectory); }