| Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java
|
| ===================================================================
|
| --- editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java (revision 2318)
|
| +++ editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/omni/OmniBoxControlContribution.java (working copy)
|
| @@ -138,7 +138,7 @@
|
| }
|
|
|
| public void giveFocus() {
|
| - previousFocusControl = control.getDisplay().getFocusControl();
|
| + cacheFocusControl(control.getDisplay().getFocusControl());
|
| control.setFocus();
|
| clearWatermark();
|
| }
|
| @@ -163,7 +163,7 @@
|
| protected void handleMouseEnter() {
|
| inControl = true;
|
| //cache on mouse enter to ensure we can restore focus after an invocation initiated by a mouse click
|
| - previousFocusControl = Display.getDefault().getFocusControl();
|
| + cacheFocusControl(control.getDisplay().getFocusControl());
|
| }
|
|
|
| protected void handleMouseExit() {
|
| @@ -180,6 +180,14 @@
|
| }
|
| }
|
|
|
| + private void cacheFocusControl(Control focusControl) {
|
| + //since the point of caching the control is to restore focus away from us,
|
| + //ignore any sets to "self"
|
| + if (focusControl != control) {
|
| + previousFocusControl = focusControl;
|
| + }
|
| + }
|
| +
|
| private void clearWatermark() {
|
| //ensure watermark (or valid text) does not get re-cleared
|
| if (control.getForeground().equals(OmniBoxColors.SEARCHBOX_TEXT_COLOR)) {
|
| @@ -301,7 +309,6 @@
|
| }
|
| }
|
| });
|
| -
|
| }
|
|
|
| private void openPopup() {
|
|
|