Fix macOS keyboard focus not restored when switching back from another space
Fixes #9665 Fixes #9666
This commit is contained in:
parent
b3b7d0596d
commit
66ffb6895c
2 changed files with 20 additions and 0 deletions
|
|
@ -188,6 +188,8 @@ Detailed list of changes
|
|||
|
||||
- Don't use neighboring tab colors for tab bar margins in translucent windows (:iss:`9663`)
|
||||
|
||||
- macOS: Fix OS window focus not restored when switching spaces (:iss:`9665`)
|
||||
|
||||
0.46.0 [2026-03-11]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
|
|
@ -311,6 +311,24 @@ - (void)applicationDidActivate:(NSNotification *)notification {
|
|||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(NSNotification *)notification {
|
||||
(void)notification;
|
||||
// When the application becomes active after switching spaces (e.g., swiping
|
||||
// back from a fullscreen app on another space), macOS may not send
|
||||
// windowDidBecomeKey: for the already-key window. This leaves GLFW thinking
|
||||
// no window has focus (since windowDidResignKey: was sent when leaving).
|
||||
// Ensure GLFW's focus state is updated to match the actual key window.
|
||||
NSWindow *keyWindow = [NSApp keyWindow];
|
||||
if (keyWindow && !_glfw.focusedWindowId) {
|
||||
for (_GLFWwindow *window = _glfw.windowListHead; window; window = window->next) {
|
||||
if (window->ns.object == keyWindow) {
|
||||
if (_glfw.focusedWindowId != window->id) _glfwInputWindowFocus(window, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
|
||||
{
|
||||
(void)sender;
|
||||
|
|
|
|||
Loading…
Reference in a new issue