fix: make BrowserWindow#isFocused() return false when blur() is called on macOS (#34031)

The isFocused() method on macOS works by checking if the selected
BrowserWindow is a key window. Unfortunately, this didn't work well
with blur() because it wasn't calling any macOS APIs that would change
the key status of the window. Hence, this changes the implementation of
blur() to call orderOut first, which removes the key
status of the window. Then when the orderBack function is called, it
moves the window to the back of its level in the screen list, without
changing the key window.

Fixes: https://github.com/electron/electron/issues/33732
Signed-off-by: Darshan Sen <raisinten@gmail.com>

Co-authored-by: Darshan Sen <raisinten@gmail.com>
This commit is contained in:
trop[bot]
2022-05-04 00:05:17 -07:00
committed by GitHub
parent 577b2ba44b
commit 9f66268fab
2 changed files with 127 additions and 2 deletions

View File

@@ -506,6 +506,7 @@ void NativeWindowMac::Focus(bool focus) {
[[NSApplication sharedApplication] activateIgnoringOtherApps:NO];
[window_ makeKeyAndOrderFront:nil];
} else {
[window_ orderOut:nil];
[window_ orderBack:nil];
}
}