IDEA-221599 ui: search everywhere should not change selection when more elements are loaded

GitOrigin-RevId: 6db8f3c4644db37aa32f178359c79b453b63bb5d
This commit is contained in:
Aleksey Pivovarov
2019-09-17 13:32:17 +00:00
committed by intellij-monorepo-bot
parent 42609085fc
commit 2110ad0aa4
@@ -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<? extends SearchEverywhereFoundElementInfo> 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;
}
}
}
}
}