From 273baec3a87613ce3d04be3dfe3371a4dbeef270 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 13 Aug 2012 15:04:50 +0200 Subject: [PATCH] TargetElementUtil: only retrieve lookup when asked to (EA-35476,EA-38080) --- .../codeInsight/TargetElementUtilBase.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/TargetElementUtilBase.java b/platform/lang-impl/src/com/intellij/codeInsight/TargetElementUtilBase.java index 923408f83834..6c7cfe135fbf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/TargetElementUtilBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/TargetElementUtilBase.java @@ -156,12 +156,10 @@ public class TargetElementUtilBase { Project project = editor.getProject(); if (project == null) return null; - Lookup activeLookup = LookupManager.getInstance(project).getActiveLookup(); - if (activeLookup != null && (flags & LOOKUP_ITEM_ACCEPTED) != 0) { - LookupElement item = activeLookup.getCurrentItem(); - final PsiElement psi = item == null ? null : CompletionUtil.getTargetElement(item); - if (psi != null && psi.isValid()) { - return psi; + if ((flags & LOOKUP_ITEM_ACCEPTED) != 0) { + PsiElement element = getTargetElementFromLookup(project); + if (element != null) { + return element; } } @@ -197,6 +195,19 @@ public class TargetElementUtilBase { return null; } + @Nullable + private static PsiElement getTargetElementFromLookup(Project project) { + Lookup activeLookup = LookupManager.getInstance(project).getActiveLookup(); + if (activeLookup != null) { + LookupElement item = activeLookup.getCurrentItem(); + final PsiElement psi = item == null ? null : CompletionUtil.getTargetElement(item); + if (psi != null && psi.isValid()) { + return psi; + } + } + return null; + } + protected boolean isAcceptableReferencedElement(final PsiElement element, final PsiElement referenceOrReferencedElement) { return referenceOrReferencedElement != null && referenceOrReferencedElement.isValid();