diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java b/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java index d1573e2adc7f..ff3977cf4be8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/impl/DialogWrapperPeerImpl.java @@ -18,7 +18,6 @@ package com.intellij.openapi.ui.impl; import com.intellij.ide.DataManager; import com.intellij.ide.IdeEventQueue; import com.intellij.ide.impl.TypeSafeDataProviderAdapter; -import com.intellij.ide.ui.UISettings; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.Application; @@ -49,6 +48,7 @@ import com.intellij.ui.components.JBLayeredPane; import com.intellij.ui.mac.foundation.Foundation; import com.intellij.ui.mac.foundation.ID; import com.intellij.ui.mac.foundation.MacUtil; +import com.intellij.util.IJSwingUtilities; import com.intellij.util.ReflectionUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; @@ -986,7 +986,7 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra toFocus = getRootPane().getDefaultButton(); } - moveMousePointerOnButton(getRootPane().getDefaultButton()); + IJSwingUtilities.moveMousePointerOn(getRootPane().getDefaultButton()); setupSelectionOnPreferredComponent(toFocus); if (toFocus != null) { @@ -1033,23 +1033,6 @@ public class DialogWrapperPeerImpl extends DialogWrapperPeer implements FocusTra return activeWrapper; } - - private void moveMousePointerOnButton(final JButton button) { - Application application = ApplicationManager.getApplication(); - if (application != null && application.hasComponent(UISettings.class)) { - if (button != null && UISettings.getInstance().MOVE_MOUSE_ON_DEFAULT_BUTTON) { - Point p = button.getLocationOnScreen(); - Rectangle r = button.getBounds(); - try { - Robot robot = new Robot(); - robot.mouseMove(p.x + r.width / 2, p.y + r.height / 2); - } - catch (AWTException e) { - LOG.warn(e); - } - } - } - } } private class MyComponentListener extends ComponentAdapter { diff --git a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java index a967245c9224..3c01fdd78d53 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/AbstractPopup.java @@ -45,6 +45,7 @@ import com.intellij.ui.components.JBLabel; import com.intellij.ui.speedSearch.SpeedSearch; import com.intellij.util.Alarm; import com.intellij.util.BooleanFunction; +import com.intellij.util.IJSwingUtilities; import com.intellij.util.Processor; import com.intellij.util.ui.ChildFocusWatcher; import com.intellij.util.ui.EmptyIcon; @@ -900,6 +901,7 @@ public class AbstractPopup implements JBPopup { public void run() { if (myPreferredFocusedComponent != null && myInStack && myFocusable) { myFocusTrackback.registerFocusComponent(myPreferredFocusedComponent); + IJSwingUtilities.moveMousePointerOn(myPreferredFocusedComponent); } removeActivity(); diff --git a/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java b/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java index bd0efda42c48..5660f0ca05d6 100644 --- a/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java +++ b/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java @@ -15,6 +15,7 @@ */ package com.intellij.util; +import com.intellij.ide.ui.UISettings; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.wm.ex.WindowManagerEx; @@ -269,4 +270,21 @@ public class IJSwingUtilities extends JBSwingUtilities { } } } + + public static void moveMousePointerOn(Component component) { + if (component != null && component.isShowing()) { + UISettings settings = ApplicationManager.getApplication() == null ? null : UISettings.getInstance(); + if (settings != null && settings.MOVE_MOUSE_ON_DEFAULT_BUTTON) { + Point point = component.getLocationOnScreen(); + int dx = component.getWidth() / 2; + int dy = component.getHeight() / 2; + try { + new Robot().mouseMove(point.x + dx, point.y + dy); + } + catch (AWTException ignored) { + // robot is not available + } + } + } + } } \ No newline at end of file