Index: editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java |
diff --git a/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java |
index d39decac673716f1648d4876b7defe275e04468e..673f2e513287291b4e9ed84eda0f017d4b5bdf09 100644 |
--- a/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java |
+++ b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java |
@@ -29,6 +29,8 @@ import org.eclipse.swt.events.ModifyListener; |
import org.eclipse.swt.events.MouseAdapter; |
import org.eclipse.swt.events.MouseEvent; |
import org.eclipse.swt.events.MouseTrackAdapter; |
+import org.eclipse.swt.events.ShellAdapter; |
+import org.eclipse.swt.events.ShellEvent; |
import org.eclipse.swt.graphics.Point; |
import org.eclipse.swt.widgets.Composite; |
import org.eclipse.swt.widgets.Control; |
@@ -424,6 +426,20 @@ public class OmniBoxControlContribution { |
handleFocusLost(); |
} |
}); |
+ |
+ // close popup when Editor lost focus |
+ textControl.getShell().addShellListener(new ShellAdapter() { |
+ @Override |
+ public void shellDeactivated(ShellEvent e) { |
+ Shell activeShell = Display.getCurrent().getActiveShell(); |
+ if (activeShell == null) { |
+ if (popup != null) { |
+ popup.close(); |
+ popup = null; |
+ } |
+ } |
+ } |
+ }); |
} |
private void openPopup() { |