diff options
author | Alexander Lobas <alexander-lobas@users.noreply.github.com> | 2022-05-11 19:48:10 +0300 |
---|---|---|
committer | Alexey Ushakov <alexey.v.ushakov@gmail.com> | 2022-05-12 11:03:53 +0200 |
commit | fb428d58b1ef65015693eb4b743b911a9858d05f (patch) | |
tree | d4a1d42a8c0bf3e5c69b3baf598b507dbd7452c0 | |
parent | 5e3573d422efc9cad1dcebfde4eddf206dc9af68 (diff) | |
download | JetBrainsRuntime-fb428d58b1ef65015693eb4b743b911a9858d05f.tar.gz |
JBR-4462 BigSur: project tab does not gain focus when click it after focusing another app
-rw-r--r-- | src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java index e907a997216..07a633a0c43 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java @@ -978,6 +978,14 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo return ref.get(); } + private boolean isTabbedWindow() { + AtomicBoolean ref = new AtomicBoolean(); + execute(ptr -> { + ref.set(CWrapper.NSWindow.isTabbedWindow(ptr)); + }); + return ref.get(); + } + // We want a window to be always shown at the same space as its owning window. // But macOS doesn't have an API to control the target space for a window - // it's always shown at the active space. So if the target space isn't active now, @@ -1345,7 +1353,9 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo // which is going to become 'main window', are placed above their siblings. CPlatformWindow rootOwner = getRootOwner(); if (rootOwner.isVisible() && !rootOwner.isIconified() && !rootOwner.isActive()) { - rootOwner.execute(CWrapper.NSWindow::orderFrontIfOnActiveSpace); + if (rootOwner != this || !isTabbedWindow()) { + rootOwner.execute(CWrapper.NSWindow::orderFrontIfOnActiveSpace); + } } // Do not order child windows of iconified owner. |