From 2110ad0aa4e904dcd179105b222f82ecbb6146a1 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 17 Sep 2019 16:05:30 +0300 Subject: [PATCH] IDEA-221599 ui: search everywhere should not change selection when more elements are loaded GitOrigin-RevId: 6db8f3c4644db37aa32f178359c79b453b63bb5d --- .../searcheverywhere/SearchEverywhereUI.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java index 3f8e05dc73eb..c455f0e51ea1 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/searcheverywhere/SearchEverywhereUI.java @@ -1554,14 +1554,28 @@ public class SearchEverywhereUI extends BigPopupUI implements DataProvider, Quic private final SearchListener mySearchListener = new SearchListener(); private class SearchListener implements SESearcher.Listener { - @Override public void elementsAdded(@NotNull List list) { + boolean wasEmpty = myListModel.listElements.isEmpty(); + mySelectionTracker.lock(); myListModel.addElements(list); mySelectionTracker.unlock(); mySelectionTracker.restoreSelection(); + + if (wasEmpty && !myListModel.listElements.isEmpty()) { + Object prevSelection = ((SearchEverywhereManagerImpl)SearchEverywhereManager.getInstance(myProject)) + .getPrevSelection(getSelectedContributorID()); + if (prevSelection instanceof Integer) { + for (SearchEverywhereFoundElementInfo info : myListModel.listElements) { + if (Objects.hashCode(info.element) == ((Integer)prevSelection).intValue()) { + myResultsList.setSelectedValue(info.element, true); + break; + } + } + } + } } @Override @@ -1588,17 +1602,6 @@ public class SearchEverywhereUI extends BigPopupUI implements DataProvider, Quic hasMoreContributors.forEach(myListModel::setHasMore); mySelectionTracker.resetSelectionIfNeeded(); - - Object prevSelection = ((SearchEverywhereManagerImpl)SearchEverywhereManager.getInstance(myProject)) - .getPrevSelection(getSelectedContributorID()); - if (prevSelection instanceof Integer) { - for (SearchEverywhereFoundElementInfo info : myListModel.listElements) { - if (Objects.hashCode(info.element) == ((Integer)prevSelection).intValue()) { - myResultsList.setSelectedValue(info.element, true); - break; - } - } - } } }