summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java')
-rw-r--r--platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java
index df55cbad9346..c27ce400049e 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java
@@ -54,13 +54,17 @@ import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.intellij.psi.*;
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.psi.util.PsiUtilCore;
import com.intellij.ui.ListScrollingUtil;
import com.intellij.ui.content.Content;
import com.intellij.ui.popup.AbstractPopup;
import com.intellij.ui.popup.NotLookupOrSearchCondition;
import com.intellij.ui.popup.PopupPositionManager;
import com.intellij.ui.popup.PopupUpdateProcessor;
-import com.intellij.util.*;
+import com.intellij.util.Alarm;
+import com.intellij.util.BooleanFunction;
+import com.intellij.util.Consumer;
+import com.intellij.util.Processor;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -572,7 +576,7 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
final PsiReference ref = TargetElementUtilBase.findReference(editor, offset);
if (ref != null) {
element = assertSameProject(util.adjustReference(ref));
- if (element == null && ref instanceof PsiPolyVariantReference) {
+ if (ref instanceof PsiPolyVariantReference) {
element = assertSameProject(ref.getElement());
}
}
@@ -595,16 +599,17 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
int offset = editor.getCaretModel().getOffset();
if (offset > 0 && offset == editor.getDocument().getTextLength()) offset--;
- final PsiElement contextElement = file == null? null : file.findElementAt(offset);
- final PsiReference ref = TargetElementUtilBase.findReference(editor, offset);
+ PsiReference ref = TargetElementUtilBase.findReference(editor, offset);
+ PsiElement contextElement = file == null? null : file.findElementAt(offset);
+ PsiElement targetElement = ref != null ? ref.getElement() : contextElement;
+ if (targetElement != null) {
+ PsiUtilCore.ensureValid(targetElement);
+ }
- final DocumentationProvider documentationProvider = getProviderFromElement(file);
+ DocumentationProvider documentationProvider = getProviderFromElement(file);
- return documentationProvider.getDocumentationElementForLookupItem(
- PsiManager.getInstance(myProject),
- item.getObject(),
- ref != null ? ref.getElement():contextElement
- );
+ PsiManager psiManager = PsiManager.getInstance(myProject);
+ return documentationProvider.getDocumentationElementForLookupItem(psiManager, item.getObject(), targetElement);
}
}
return null;