ui: extract registry key for focus-stealing workarounds using setAutoRequestFocus

This commit is contained in:
Aleksey Pivovarov
2018-07-09 13:03:11 +03:00
parent 58af9a5858
commit c52ec5d8d6
5 changed files with 9 additions and 5 deletions
@@ -30,8 +30,8 @@ import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.io.win32.WindowsElevationUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.*;
import com.intellij.openapi.wm.ex.IdeFrameEx;
@@ -98,7 +98,9 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, AccessibleContex
setSize(size);
setLocationRelativeTo(null);
if (Registry.is("suppress.focus.stealing") && !ApplicationManagerEx.getApplicationEx().isActive()) {
if (Registry.is("suppress.focus.stealing") &&
Registry.is("suppress.focus.stealing.auto.request.focus") &&
!ApplicationManagerEx.getApplicationEx().isActive()) {
setAutoRequestFocus(false);
}
@@ -110,7 +110,7 @@ public class FlatWelcomeFrame extends JFrame implements IdeFrame, Disposable, Ac
size.height
);
if (Registry.is("suppress.focus.stealing")) {
if (Registry.is("suppress.focus.stealing") && Registry.is("suppress.focus.stealing.auto.request.focus")) {
setAutoRequestFocus(false);
}
@@ -74,7 +74,7 @@ public class Splash extends JDialog implements StartupProgress {
contentPane.setLayout(new BorderLayout());
contentPane.add(myLabel, BorderLayout.CENTER);
Dimension size = getPreferredSize();
if (Registry.is("suppress.focus.stealing")) {
if (Registry.is("suppress.focus.stealing") && Registry.is("suppress.focus.stealing.auto.request.focus")) {
setAutoRequestFocus(false);
}
setSize(size);
@@ -900,6 +900,8 @@ focus.fix.lost.cursor.description=See IDEA-79312
suppress.focus.stealing=true
suppress.focus.stealing.description=(Experimental) Trying to fight focus stealing
suppress.focus.stealing.auto.request.focus=true
suppress.focus.stealing.auto.request.focus.description=(Experimental) Trying to fight focus stealing after first window activation. Does nothing if `suppress.focus.stealing` disabled.
ide.mouse.popup.trigger.modifiers.disabled=true
ide.mouse.popup.trigger.modifiers.disabled.description=Do not show a context popup if right button is pressed with modifiers
@@ -4109,7 +4109,7 @@ public class UIUtil {
public static void suppressFocusStealing (Window window) {
// Focus stealing is not a problem on Mac
if (SystemInfo.isMac) return;
if (Registry.is("suppress.focus.stealing")) {
if (Registry.is("suppress.focus.stealing") && Registry.is("suppress.focus.stealing.auto.request.focus")) {
setAutoRequestFocus(window, false);
}
}