Merge pull request #40721 from bruvzg/macos_tooltip_nofocus

[macOS] Fix tooltips stealing focus.
This commit is contained in:
Rémi Verschelde 2020-07-26 15:02:44 +02:00 committed by GitHub
commit cab0f12aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2793,7 +2793,9 @@ void DisplayServerOSX::window_set_flag(WindowFlags p_flag, bool p_enabled, Windo
} break; } break;
case WINDOW_FLAG_BORDERLESS: { case WINDOW_FLAG_BORDERLESS: {
// OrderOut prevents a lose focus bug with the window // OrderOut prevents a lose focus bug with the window
[wd.window_object orderOut:nil]; if ([wd.window_object isVisible]) {
[wd.window_object orderOut:nil];
}
wd.borderless = p_enabled; wd.borderless = p_enabled;
if (p_enabled) { if (p_enabled) {
[wd.window_object setStyleMask:NSWindowStyleMaskBorderless]; [wd.window_object setStyleMask:NSWindowStyleMaskBorderless];
@ -2807,7 +2809,13 @@ void DisplayServerOSX::window_set_flag(WindowFlags p_flag, bool p_enabled, Windo
[wd.window_object setFrame:frameRect display:NO]; [wd.window_object setFrame:frameRect display:NO];
} }
_update_window(wd); _update_window(wd);
[wd.window_object makeKeyAndOrderFront:nil]; if ([wd.window_object isVisible]) {
if (wd.no_focus) {
[wd.window_object orderFront:nil];
} else {
[wd.window_object makeKeyAndOrderFront:nil];
}
}
} break; } break;
case WINDOW_FLAG_ALWAYS_ON_TOP: { case WINDOW_FLAG_ALWAYS_ON_TOP: {
wd.on_top = p_enabled; wd.on_top = p_enabled;
@ -2875,7 +2883,11 @@ void DisplayServerOSX::window_move_to_foreground(WindowID p_window) {
const WindowData &wd = windows[p_window]; const WindowData &wd = windows[p_window];
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
[wd.window_object makeKeyAndOrderFront:nil]; if (wd.no_focus) {
[wd.window_object orderFront:nil];
} else {
[wd.window_object makeKeyAndOrderFront:nil];
}
} }
bool DisplayServerOSX::window_can_draw(WindowID p_window) const { bool DisplayServerOSX::window_can_draw(WindowID p_window) const {