mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
avoid expensive LookupElement.isValid check on every repaint, just ignore invalid frozen items (EA-68259 - PIEAE: PsiUtilCore.ensureValid)
This commit is contained in:
+6
-1
@@ -256,7 +256,12 @@ public class CompletionLookupArranger extends LookupArranger {
|
||||
}
|
||||
|
||||
private void addFrozenItems(Set<LookupElement> items, LinkedHashSet<LookupElement> model) {
|
||||
myFrozenItems.retainAll(items);
|
||||
for (Iterator<LookupElement> iterator = myFrozenItems.iterator(); iterator.hasNext(); ) {
|
||||
LookupElement element = iterator.next();
|
||||
if (!element.isValid() || !items.contains(element)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
model.addAll(myFrozenItems);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,7 @@ import com.intellij.codeInsight.completion.PrefixMatcher;
|
||||
import com.intellij.codeInsight.completion.impl.CompletionServiceImpl;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
@@ -104,12 +102,7 @@ public abstract class LookupArranger {
|
||||
}
|
||||
|
||||
protected List<LookupElement> getMatchingItems() {
|
||||
return ContainerUtil.filter(myMatchingItems, new Condition<LookupElement>() {
|
||||
@Override
|
||||
public boolean value(LookupElement element) {
|
||||
return element.isValid();
|
||||
}
|
||||
});
|
||||
return myMatchingItems;
|
||||
}
|
||||
|
||||
public Map<LookupElement,StringBuilder> getRelevanceStrings() {
|
||||
|
||||
Reference in New Issue
Block a user