diff --git a/platform/lang-impl/src/com/intellij/ide/PsiCopyPasteManager.java b/platform/lang-impl/src/com/intellij/ide/PsiCopyPasteManager.java index 799a6fb0a5b5..4c69bfccff8f 100644 --- a/platform/lang-impl/src/com/intellij/ide/PsiCopyPasteManager.java +++ b/platform/lang-impl/src/com/intellij/ide/PsiCopyPasteManager.java @@ -16,10 +16,12 @@ package com.intellij.ide; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ide.CopyPasteManager; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -199,22 +201,31 @@ public class PsiCopyPasteManager { return getDataAsText(); } if (DataFlavor.javaFileListFlavor.equals(flavor)) { - return asFileList(myDataProxy.getElements()); + ApplicationManager.getApplication().runReadAction(new Computable>() { + @Override + public List compute() { + return asFileList(myDataProxy.getElements()); + } + }); } return null; } @Nullable private String getDataAsText() { - List names = new ArrayList(); - for (PsiElement element : myDataProxy.getElements()) { - if (element instanceof PsiNamedElement) { - String name = ((PsiNamedElement) element).getName(); - if (name != null) { - names.add(name); + final List names = new ArrayList(); + ApplicationManager.getApplication().runReadAction(new Runnable() { + public void run() { + for (PsiElement element : myDataProxy.getElements()) { + if (element instanceof PsiNamedElement) { + String name = ((PsiNamedElement) element).getName(); + if (name != null) { + names.add(name); + } + } } } - } + }); if (names.isEmpty()) { return null; }