From 367771be6b6a5bf273e56a876ea2b78415ee2981 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 7 Aug 2012 18:08:31 +0200 Subject: [PATCH] add read action (EA-37259) --- .../psi/impl/search/PsiSearchHelperImpl.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java b/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java index 6dec73031c03..f4ec73509aaa 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java @@ -342,7 +342,7 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { public void processUsagesInNonJavaFiles(@Nullable final PsiElement originalElement, @NotNull String qName, @NotNull final PsiNonJavaFileReferenceProcessor processor, - @NotNull GlobalSearchScope searchScope) { + @NotNull final GlobalSearchScope initialScope) { if (qName.length() == 0) { throw new IllegalArgumentException("Cannot search for elements with empty text"); } @@ -352,10 +352,15 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { int dollarIndex = qName.lastIndexOf('$'); int maxIndex = Math.max(dotIndex, dollarIndex); final String wordToSearch = maxIndex >= 0 ? qName.substring(maxIndex + 1) : qName; - if (originalElement != null && myManager.isInProject(originalElement) && searchScope.isSearchInLibraries()) { - searchScope = searchScope.intersectWith(GlobalSearchScope.projectScope(myManager.getProject())); - } - final GlobalSearchScope theSearchScope = searchScope; + final GlobalSearchScope theSearchScope = ApplicationManager.getApplication().runReadAction(new Computable() { + @Override + public GlobalSearchScope compute() { + if (originalElement != null && myManager.isInProject(originalElement) && initialScope.isSearchInLibraries()) { + return initialScope.intersectWith(GlobalSearchScope.projectScope(myManager.getProject())); + } + return initialScope; + } + }); PsiFile[] files = ApplicationManager.getApplication().runReadAction(new Computable() { @Override public PsiFile[] compute() { @@ -380,7 +385,7 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { }.execute().getResultObject(); final Ref cancelled = new Ref(Boolean.FALSE); - final GlobalSearchScope finalScope = searchScope; + final GlobalSearchScope finalScope = initialScope; for (int i = 0; i < files.length; i++) { if (progress != null) progress.checkCanceled();