diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java index bd254bbfb9af..1c81a500bf6e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java @@ -70,8 +70,21 @@ public abstract class DockablePopupManager { protected abstract String getTitle(PsiElement element); protected abstract String getToolwindowId(); - - + public Content recreateToolWindow(PsiElement element, PsiElement originalElement) { + if (myToolWindow == null) { + createToolWindow(element, originalElement); + return null; + } + + final Content content = myToolWindow.getContentManager().getSelectedContent(); + if (content == null || !myToolWindow.isVisible()) { + restorePopupBehavior(); + createToolWindow(element, originalElement); + return null; + } + return content; + } + public void createToolWindow(final PsiElement element, PsiElement originalElement) { assert myToolWindow == null; 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 9f55baad59b1..0b6578c54635 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -190,21 +190,12 @@ public class DocumentationManager extends DockablePopupManager pinCallback = new Processor() { @Override public boolean process(JBPopup popup) { - codeViewerManager.createToolWindow(targetElement, targetElement); + codeViewerManager.recreateToolWindow(targetElement, targetElement); popup.cancel(); return false; }