From d1c64a6ecfcb3c050b84814cf4b3f1d93640a682 Mon Sep 17 00:00:00 2001 From: Vassiliy Kudryashov Date: Wed, 28 Mar 2012 13:29:54 +0400 Subject: [PATCH] Hints misbehaviour fix --- .../src/com/intellij/ide/IdeTooltip.java | 11 +++++++++++ .../src/com/intellij/ide/IdeTooltipManager.java | 7 ++++++- .../src/com/intellij/ui/LightweightHint.java | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/IdeTooltip.java b/platform/platform-impl/src/com/intellij/ide/IdeTooltip.java index fea6906a3b9f..59511366ce00 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeTooltip.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeTooltip.java @@ -50,6 +50,8 @@ public class IdeTooltip extends ComparableObject.Impl { private Ui myUi; + private boolean hint = false; + public IdeTooltip(Component component, Point point, JComponent tipComponent, Object... identity) { super(identity); @@ -232,6 +234,15 @@ public class IdeTooltip extends ComparableObject.Impl { return myLayer; } + public IdeTooltip setHint(boolean hint) { + this.hint = hint; + return this; + } + + public boolean isHint() { + return hint; + } + public boolean isInside(RelativePoint target) { return myUi != null && myUi.isInside(target); } diff --git a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java index 61aaca2999b7..ecfc7331e470 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.java @@ -143,7 +143,12 @@ public class IdeTooltipManager implements ApplicationComponent, AWTEventListener if (!myCurrentTipIsCentered) { myX = me.getX(); myY = me.getY(); - maybeShowFor(c, me); + if (c instanceof JComponent && ((JComponent)c).getToolTipText(me) == null && (myQueuedTooltip == null || !myQueuedTooltip.isHint())) { + hideCurrent(me, null, null);//There is no tooltip or hint here, let's proceed it as MOUSE_EXITED + } + else { + maybeShowFor(c, me); + } } } } diff --git a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java index 56acf0a9cc90..0f09b4ec66dc 100644 --- a/platform/platform-impl/src/com/intellij/ui/LightweightHint.java +++ b/platform/platform-impl/src/com/intellij/ui/LightweightHint.java @@ -166,8 +166,8 @@ public class LightweightHint extends UserDataHolderBase implements Hint { .setFont(hintHint.getTextFont()) .setCalloutShift(hintHint.getCalloutShift()) .setPositionChangeShift(hintHint.getPositionChangeX(), hintHint.getPositionChangeY()) - .setExplicitClose(hintHint.isExplicitClose()); - + .setExplicitClose(hintHint.isExplicitClose()) + .setHint(true); myComponent.validate(); myCurrentIdeTooltip = IdeTooltipManager.getInstance().show(tooltip, hintHint.isShowImmediately()); } else {