From a321d9173ade27033ea8289feed5e873db5606cd Mon Sep 17 00:00:00 2001 From: Vassiliy Kudryashov Date: Tue, 28 Feb 2012 19:11:40 +0400 Subject: [PATCH] IDEA-55206 - IDEA tooltips do not disappear when I change the active window --- .../debugger/ui/impl/DebuggerTreeBase.java | 4 ++-- .../intellij/debugger/ui/impl/TipManager.java | 24 +++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreeBase.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreeBase.java index 3c2f626eb0df..25aaea4ad2c8 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreeBase.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreeBase.java @@ -66,8 +66,8 @@ public class DebuggerTreeBase extends DnDAwareTree implements Disposable { return DebuggerTreeBase.this.createToolTip(e); } - public MouseEvent createTooltipEvent(MouseEvent candiateEvent) { - return DebuggerTreeBase.this.createTooltipEvent(candiateEvent); + public MouseEvent createTooltipEvent(MouseEvent candidateEvent) { + return DebuggerTreeBase.this.createTooltipEvent(candidateEvent); } public boolean isFocusOwner() { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java index 9dd8aa77174b..5a8f0c1066a0 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java @@ -16,6 +16,8 @@ package com.intellij.debugger.ui.impl; import com.intellij.debugger.settings.DebuggerSettings; +import com.intellij.ide.FrameStateListener; +import com.intellij.ide.FrameStateManager; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; @@ -23,7 +25,6 @@ import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.registry.Registry; -import com.intellij.openapi.util.registry.RegistryValue; import com.intellij.openapi.wm.IdeGlassPane; import com.intellij.openapi.wm.IdeGlassPaneUtil; import com.intellij.util.Alarm; @@ -45,13 +46,12 @@ public class TipManager implements Disposable, PopupMenuListener { private volatile boolean myIsDisposed = false; private boolean myPopupShown; private MyAwtPreprocessor myHideCanceller; - private RegistryValue myTooltipProperty; private MouseEvent myLastMouseEvent; public interface TipFactory { JComponent createToolTip (MouseEvent e); - MouseEvent createTooltipEvent(MouseEvent candiateEvent); + MouseEvent createTooltipEvent(MouseEvent candidateEvent); boolean isFocusOwner(); } @@ -99,6 +99,18 @@ public class TipManager implements Disposable, PopupMenuListener { } } + private class MyFrameStateListener implements FrameStateListener { + @Override + public void onFrameDeactivated() { + hideTooltip(true); + } + + @Override + public void onFrameActivated() { + //Do nothing + } + } + public JPopupMenu registerPopup(JPopupMenu menu) { menu.addPopupMenuListener(this); return menu; @@ -243,6 +255,7 @@ public class TipManager implements Disposable, PopupMenuListener { private final JComponent myComponent; private MouseListener myMouseListener = new MyMouseListener(); private MouseMotionListener myMouseMotionListener = new MyMouseMotionListener(); + private FrameStateListener myFrameStateListener = new MyFrameStateListener(); private final Alarm myShowAlarm = new Alarm(); private final Alarm myHideAlarm = new Alarm(); @@ -294,7 +307,8 @@ public class TipManager implements Disposable, PopupMenuListener { myGP.addMouseMotionPreprocessor(myMouseMotionListener, this); myHideCanceller = new MyAwtPreprocessor(); - Toolkit.getDefaultToolkit().addAWTEventListener(myHideCanceller, MouseEvent.MOUSE_MOTION_EVENT_MASK | KeyEvent.KEY_EVENT_MASK | MouseEvent.MOUSE_EVENT_MASK); + Toolkit.getDefaultToolkit().addAWTEventListener(myHideCanceller, AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK); + FrameStateManager.getInstance().addListener(myFrameStateListener); } public void dispose() { @@ -308,6 +322,8 @@ public class TipManager implements Disposable, PopupMenuListener { myShowAlarm.cancelAllRequests(); myMouseListener = null; myMouseMotionListener = null; + FrameStateManager.getInstance().removeListener(myFrameStateListener); + myFrameStateListener = null; } private class MyAwtPreprocessor implements AWTEventListener {