mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-221599 ui: search everywhere should not change selection when more elements are loaded
GitOrigin-RevId: 6db8f3c4644db37aa32f178359c79b453b63bb5d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
42609085fc
commit
2110ad0aa4
+15
-12
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user