diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java index 248614ed0289..7922e0ee6d46 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java @@ -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); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java index 51cf88987722..715082ae5b4e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrame.java @@ -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); } diff --git a/platform/platform-impl/src/com/intellij/ui/Splash.java b/platform/platform-impl/src/com/intellij/ui/Splash.java index 1759f3ebfd21..6398c61dea0c 100644 --- a/platform/platform-impl/src/com/intellij/ui/Splash.java +++ b/platform/platform-impl/src/com/intellij/ui/Splash.java @@ -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); diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index ae1e9313a269..fa580f494044 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -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 diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index 985a9e387f29..6689f974466c 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -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); } }