aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Lobas <alexander-lobas@users.noreply.github.com>2022-05-11 19:48:10 +0300
committerAlexey Ushakov <alexey.v.ushakov@gmail.com>2022-05-12 11:03:53 +0200
commitfb428d58b1ef65015693eb4b743b911a9858d05f (patch)
treed4a1d42a8c0bf3e5c69b3baf598b507dbd7452c0
parent5e3573d422efc9cad1dcebfde4eddf206dc9af68 (diff)
downloadJetBrainsRuntime-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.java12
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.