IDEA-106716 Don't steal focus

This commit is contained in:
Denis Fokin
2013-12-09 18:48:57 +04:00
parent a78f80daab
commit 3e8981595d
3 changed files with 24 additions and 3 deletions
@@ -19,6 +19,8 @@ import com.intellij.openapi.ui.popup.util.PopupUtil;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.ActiveRunnable;
import com.intellij.openapi.util.Expirable;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -149,8 +151,26 @@ public abstract class FocusCommand extends ActiveRunnable implements Expirable {
@NotNull
public final ActionCallback run() {
if (myToFocus != null) {
if (!myToFocus.requestFocusInWindow()) {
myToFocus.requestFocus();
if (Registry.is("actionSystem.doNotStealFocus")) {
Window topWindow = SwingUtilities.windowForComponent(myToFocus);
UIUtil.setAutoRequestFocus(topWindow, topWindow.isActive());
while (topWindow.getOwner() != null) {
topWindow = SwingUtilities.windowForComponent(topWindow);
UIUtil.setAutoRequestFocus(topWindow, topWindow.isActive());
}
if (topWindow.isActive()) {
if (!myToFocus.requestFocusInWindow()) {
myToFocus.requestFocus();
}
} else {
myToFocus.requestFocusInWindow();
}
} else {
if (!myToFocus.requestFocusInWindow()) {
myToFocus.requestFocus();
}
}
}
clear();
@@ -60,6 +60,7 @@ public class Splash extends JDialog implements StartupProgress {
setUndecorated(true);
setResizable(false);
setFocusableWindowState(false);
UIUtil.setAutoRequestFocus(this, false);
Icon originalImage = IconLoader.getIcon(imageName);
myImage = new SplashImage(originalImage, textColor);
@@ -79,7 +80,6 @@ public class Splash extends JDialog implements StartupProgress {
setSize(size);
pack();
setLocationRelativeTo(null);
UIUtil.setAutoRequestFocus(this, false);
}
public Splash(ApplicationInfoEx info) {
@@ -29,6 +29,7 @@ actionSystem.mac.screenMenuNotUpdatedFix=false
actionSystem.keyGestures.enabled=false
actionSystem.keyGestureDblClickTime=500
actionSystem.suspendFocusTransferIfApplicationInactive=true
actionSystem.doNotStealFocus=false
actionSystem.noContextComponentWhileFocusTransfer=true
actionSystem.secondKeystrokeTimeout=2000
actionSystem.secondKeystrokeAutoPopupEnabled=false