1
0
mirror of https://github.com/godotengine/godot.git synced 2026-01-05 19:31:35 +00:00

Merge pull request #114495 from bruvzg/mac_w_ord

[macOS] Fix non-focusable window order.
This commit is contained in:
Rémi Verschelde
2026-01-01 16:48:03 +01:00

View File

@@ -1788,7 +1788,14 @@ void DisplayServerMacOS::show_window(WindowID p_id) {
if ([wd.window_object isMiniaturized]) {
return;
} else if (wd.no_focus) {
[wd.window_object orderFront:nil];
if (wd.transient_parent != INVALID_WINDOW_ID) {
WindowData &wd_parent = windows[wd.transient_parent];
[wd.window_object orderWindow:NSWindowAbove relativeTo:[wd_parent.window_object windowNumber]];
} else if (p_id != MAIN_WINDOW_ID) {
[wd.window_object orderWindow:NSWindowAbove relativeTo:[windows[MAIN_WINDOW_ID].window_object windowNumber]];
} else {
[wd.window_object orderFront:nil];
}
} else {
[wd.window_object makeKeyAndOrderFront:nil];
}
@@ -1980,7 +1987,14 @@ void DisplayServerMacOS::reparent_check(WindowID p_window) {
if ([[wd_parent.window_object childWindows] containsObject:wd.window_object]) {
[wd_parent.window_object removeChildWindow:wd.window_object];
[wd.window_object setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
[wd.window_object orderFront:nil];
if (wd.transient_parent != INVALID_WINDOW_ID) {
WindowData &wd_parent = windows[wd.transient_parent];
[wd.window_object orderWindow:NSWindowAbove relativeTo:[wd_parent.window_object windowNumber]];
} else if (p_window != MAIN_WINDOW_ID) {
[wd.window_object orderWindow:NSWindowAbove relativeTo:[windows[MAIN_WINDOW_ID].window_object windowNumber]];
} else {
[wd.window_object orderFront:nil];
}
}
}
}
@@ -2577,7 +2591,14 @@ void DisplayServerMacOS::window_set_flag(WindowFlags p_flag, bool p_enabled, Win
if ([wd.window_object isMiniaturized]) {
return;
} else if (wd.no_focus) {
[wd.window_object orderFront:nil];
if (wd.transient_parent != INVALID_WINDOW_ID) {
WindowData &wd_parent = windows[wd.transient_parent];
[wd.window_object orderWindow:NSWindowAbove relativeTo:[wd_parent.window_object windowNumber]];
} else if (p_window != MAIN_WINDOW_ID) {
[wd.window_object orderWindow:NSWindowAbove relativeTo:[windows[MAIN_WINDOW_ID].window_object windowNumber]];
} else {
[wd.window_object orderFront:nil];
}
} else {
[wd.window_object makeKeyAndOrderFront:nil];
}
@@ -2700,7 +2721,14 @@ void DisplayServerMacOS::window_move_to_foreground(WindowID p_window) {
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
if (wd.no_focus || wd.is_popup) {
[wd.window_object orderFront:nil];
if (wd.transient_parent != INVALID_WINDOW_ID) {
WindowData &wd_parent = windows[wd.transient_parent];
[wd.window_object orderWindow:NSWindowAbove relativeTo:[wd_parent.window_object windowNumber]];
} else if (p_window != MAIN_WINDOW_ID) {
[wd.window_object orderWindow:NSWindowAbove relativeTo:[windows[MAIN_WINDOW_ID].window_object windowNumber]];
} else {
[wd.window_object orderFront:nil];
}
} else {
[wd.window_object makeKeyAndOrderFront:nil];
}