From ed575aa1fbd1e634312c21e018b680a2f0e67ac3 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 4 Jul 2012 19:04:31 +0400 Subject: [PATCH] IDEA-66333 Quick documentation lookup on mouse hover Don't show auto quick doc when the application is inactive --- .../QuickDocOnMouseOverManager.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/QuickDocOnMouseOverManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/QuickDocOnMouseOverManager.java index 4f627ad2dada..9fd72fe5b1dc 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/QuickDocOnMouseOverManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/QuickDocOnMouseOverManager.java @@ -17,13 +17,15 @@ package com.intellij.codeInsight.documentation; import com.intellij.codeInsight.hint.HintManager; import com.intellij.openapi.application.Application; +import com.intellij.openapi.application.ApplicationActivationListener; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.event.*; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopup; -import com.intellij.openapi.wm.WindowManager; +import com.intellij.openapi.wm.IdeFrame; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -34,10 +36,8 @@ import com.intellij.util.containers.WeakHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.*; import java.awt.*; import java.lang.ref.WeakReference; -import java.util.HashMap; import java.util.Map; /** @@ -57,7 +57,6 @@ public class QuickDocOnMouseOverManager { @NotNull private final Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); @NotNull private final Runnable myRequest = new MyShowQuickDocRequest(); @NotNull private final Runnable myHintCloseCallback = new MyCloseDocCallback(); - @NotNull private final WindowManager myWindowManager = WindowManager.getInstance(); private final Map myActiveElements = new WeakHashMap(); @@ -67,12 +66,27 @@ public class QuickDocOnMouseOverManager { @Nullable private DelayedQuickDocInfo myDelayedQuickDocInfo; private boolean myEnabled; + private boolean myApplicationActive; public QuickDocOnMouseOverManager(@NotNull Application application) { EditorFactory factory = EditorFactory.getInstance(); if (factory != null) { factory.addEditorFactoryListener(new MyEditorFactoryListener(), application); } + + ApplicationManager.getApplication().getMessageBus().connect().subscribe( + ApplicationActivationListener.TOPIC, + new ApplicationActivationListener() { + @Override + public void applicationActivated(IdeFrame ideFrame) { + myApplicationActive = true; + } + + @Override + public void applicationDeactivated(IdeFrame ideFrame) { + myApplicationActive = false; + } + }); } /** @@ -101,7 +115,7 @@ public class QuickDocOnMouseOverManager { } private void processMouseMove(@NotNull EditorMouseEvent e) { - if (e.getArea() != EditorMouseEventArea.EDITING_AREA) { + if (!myApplicationActive || e.getArea() != EditorMouseEventArea.EDITING_AREA) { // Skip if the mouse is not at the editing area. closeAutoQuickDocComponentIfNecessary(); return; @@ -124,11 +138,6 @@ public class QuickDocOnMouseOverManager { return; } - JFrame frame = myWindowManager.getFrame(project); - if (frame != null && !frame.isFocused()) { - return; - } - DocumentationManager documentationManager = DocumentationManager.getInstance(project); JBPopup hint = documentationManager.getDocInfoHint(); if (hint != null) {