From 69375e6833778ca40a4e6aac2976478ac2d99f91 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 10 Oct 2016 18:49:03 +0200 Subject: [PATCH] don't show progress forever in goto popups when the calculating thread throws an exception --- .../ide/util/gotoByName/ChooseByNameBase.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index 61e9d215a123..e64da3ea63de 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -1506,13 +1506,7 @@ public abstract class ChooseByNameBase { if (myProject != null && myProject.isDisposed()) return null; final Set elements = new LinkedHashSet<>(); - - boolean scopeExpanded = fillWithScopeExpansion(elements, myPattern); - - String lowerCased = patternToLowerCase(myPattern); - if (elements.isEmpty() && !lowerCased.equals(myPattern)) { - scopeExpanded = fillWithScopeExpansion(elements, lowerCased); - } + boolean scopeExpanded = populateElements(elements); final String cardToShow = elements.isEmpty() ? NOT_FOUND_CARD : scopeExpanded ? NOT_FOUND_IN_PROJECT_CARD : CHECK_BOX_CARD; Set filtered = filter(elements); @@ -1528,6 +1522,25 @@ public abstract class ChooseByNameBase { }, myModalityState); } + private boolean populateElements(Set elements) { + boolean scopeExpanded = false; + try { + scopeExpanded = fillWithScopeExpansion(elements, myPattern); + + String lowerCased = patternToLowerCase(myPattern); + if (elements.isEmpty() && !lowerCased.equals(myPattern)) { + scopeExpanded = fillWithScopeExpansion(elements, lowerCased); + } + } + catch (ProcessCanceledException e) { + throw e; + } + catch (Exception e) { + LOG.error(e); + } + return scopeExpanded; + } + private boolean fillWithScopeExpansion(Set elements, String pattern) { if (!ourLoadNamesEachTime) ensureNamesLoaded(myCheckboxState); addElementsByPattern(pattern, elements, myProgress, myCheckboxState);