From 6ab806079de67a9f4f2ed6bce101aa8faf177087 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Thu, 5 Jul 2012 13:09:04 +0400 Subject: [PATCH] IDEA-66333 Quick documentation lookup on mouse hover Don't overwrite documentation for the element under cursor by documentation for the element under caret --- .../documentation/DockablePopupManager.java | 2 +- .../documentation/DocumentationManager.java | 4 +++ .../QuickDocOnMouseOverManager.java | 30 +++++++++++++++---- 3 files changed, 29 insertions(+), 7 deletions(-) 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 d860400f9948..d1442cd3cbb2 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DockablePopupManager.java @@ -150,7 +150,7 @@ public abstract class DockablePopupManager { if (myAutoUpdateRequest == null) { myAutoUpdateRequest = new Runnable() { public void run() { - if (myProject.isDisposed()) return; + if (!myAutoUpdateDocumentation || myProject.isDisposed()) return; AsyncResult asyncResult = DataManager.getInstance().getDataContextFromFocus(); DataContext dataContext = asyncResult.getResult(); 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 b9e140735b1c..10c7d3820d4a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -175,6 +175,10 @@ public class DocumentationManager extends DockablePopupManager ref = myDocumentationManager; - if (ref == null) { - return; - } - - DocumentationManager docManager = ref.get(); + DocumentationManager docManager = getDocManager(); if (docManager == null) { return; } @@ -240,6 +236,27 @@ public class QuickDocOnMouseOverManager { myDocumentationManager = null; } + private void allowUpdateFromContext(boolean allow) { + DocumentationManager documentationManager = getDocManager(); + if (documentationManager != null) { + documentationManager.setAllowContentUpdateFromContext(allow); + } + } + + @Nullable + private DocumentationManager getDocManager() { + WeakReference ref = myDocumentationManager; + if (ref == null) { + return null; + } + + DocumentationManager docManager = ref.get(); + if (docManager == null) { + return null; + } + return docManager; + } + private static class DelayedQuickDocInfo { @NotNull public final DocumentationManager docManager; @@ -333,6 +350,7 @@ public class QuickDocOnMouseOverManager { private class MyCaretListener implements CaretListener { @Override public void caretPositionChanged(CaretEvent e) { + allowUpdateFromContext(true); closeQuickDocIfPossible(); } }