From 4885c0aebbece72e1ca4d6e3c753eb08af4518c7 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 1 Jul 2015 18:02:15 +0300 Subject: [PATCH] IDEA-140989 Cannot select item from completion popup using mouse --- .../src/com/intellij/ui/BalloonImpl.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java index 8c593a69d52c..d60649e096a0 100644 --- a/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/BalloonImpl.java @@ -106,7 +106,7 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { final boolean insideBalloon = isInsideBalloon(me); if (myHideOnMouse && id == MouseEvent.MOUSE_PRESSED) { - if (!insideBalloon && !hasModalDialog(me)) { + if (!insideBalloon && !hasModalDialog(me) && !isWithinChildWindow(me)) { hide(); } return; @@ -159,6 +159,21 @@ public class BalloonImpl implements Balloon, IdeTooltip.Ui { } }; + private boolean isWithinChildWindow(MouseEvent event) { + Component owner = UIUtil.getWindow(myContent); + if (owner != null) { + Component child = UIUtil.getWindow(event.getComponent()); + if (child != owner) { + for (; child != null; child = child.getParent()) { + if (child == owner) { + return true; + } + } + } + } + return false; + } + private static boolean hasModalDialog(MouseEvent e) { final Component c = e.getComponent(); final DialogWrapper dialog = DialogWrapper.findInstance(c);