IDEA-66333 Quick documentation lookup on mouse hover

Don't show auto quick doc when the application is inactive
This commit is contained in:
Denis.Zhdanov
2012-07-05 09:56:18 +04:00
parent c67c415ffa
commit ed575aa1fb
@@ -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<Editor, PsiElement /** PSI element which is located under the current mouse position */> myActiveElements
= new WeakHashMap<Editor, PsiElement>();
@@ -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) {