Bug 8049 - Focus is lost leaving full screen on macOS 13
Summary: Focus is lost leaving full screen on macOS 13
Status: CLOSED FIXED
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: VNC (show other bugs)
Version: trunk
Hardware: Mac macOS
: P2 Normal
Target Milestone: 4.15.0
Assignee: Pierre Ossman
URL:
Keywords: relnotes, tobfa_tester
Depends on:
Blocks:
 
Reported: 2022-12-15 15:31 CET by Pierre Ossman
Modified: 2023-01-10 12:53 CET (History)
2 users (show)

See Also:
Acceptance Criteria:


Attachments

Description Pierre Ossman cendio 2022-12-15 15:31:13 CET
Something changed with the focus handling between macOS 12 and macOS 13. We now lose focus whenever we leave full screen. It doesn't matter if a keyboard grab was active or not.

This was split of bug 8046. A backtrace for when it happened was found as part of that bug:

> (lldb) bt
> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGUSR1
>   * frame #0: 0x00007ff807a82e5a libsystem_kernel.dylib`__kill + 10
>     frame #1: 0x000000010001cfc2 vncviewer`DesktopWindow::fltkDispatch(int, Fl_Window*) + 162
>     frame #2: 0x00000001000d2616 vncviewer`-[FLWindowDelegate windowDidResignKey:] + 70
>     frame #3: 0x00007ff807b8b6e6 CoreFoundation`__CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 137
>     frame #4: 0x00007ff807c24ccc CoreFoundation`___CFXRegistrationPost_block_invoke + 86
>     frame #5: 0x00007ff807c24c23 CoreFoundation`_CFXRegistrationPost + 534
>     frame #6: 0x00007ff807b5ee61 CoreFoundation`_CFXNotificationPost + 809
>     frame #7: 0x00007ff8088d1f2c Foundation`-[NSNotificationCenter postNotificationName:object:userInfo:] + 82
>     frame #8: 0x00007ff80ad8d8dd AppKit`-[NSWindow resignKeyWindow] + 758
>     frame #9: 0x00007ff80b53af66 AppKit`-[NSWindow _orderOut:calculatingKeyWithOptions:documentWindow:] + 319
>     frame #10: 0x00007ff80ac3d1c2 AppKit`NSPerformVisuallyAtomicChange + 132
>     frame #11: 0x00007ff80b53d008 AppKit`-[NSWindow _reallyDoOrderWindowOutRelativeTo:] + 634
>     frame #12: 0x00007ff80b53d413 AppKit`-[NSWindow _reallyDoOrderWindow:] + 99
>     frame #13: 0x00007ff80b53d689 AppKit`-[NSWindow _doOrderWindow:] + 295
>     frame #14: 0x00000001000d5eb1 vncviewer`Fl_Window::fullscreen_off_x(int, int, int, int) + 113
>     frame #15: 0x00000001000b7f75 vncviewer`Fl_Window::fullscreen_off(int, int, int, int) + 85
>     frame #16: 0x0000000100028c24 vncviewer`Viewport::handleSystemEvent(void*, void*) + 436
>     frame #17: 0x000000010008daf2 vncviewer`fl_send_system_handlers(void*) + 50
>     frame #18: 0x00000001000d4555 vncviewer`+[FLApplication sendEvent:] + 21
>     frame #19: 0x00000001000d4d39 vncviewer`fl_mac_flush_and_wait(double) + 473
>     frame #20: 0x00000001003e2fc6 vncviewer`main + 2070
>     frame #21: 0x0000000100019f74 vncviewer`start + 52
Comment 1 Pierre Ossman cendio 2022-12-15 15:39:53 CET
Digging further, the call that happens in between frame 14 and frame 15 is orderOut:. We added this call as part of bug 7777, and the upstream discussion for adding that can be found here:

https://github.com/fltk/fltk/issues/287
Comment 2 Pierre Ossman cendio 2022-12-20 14:46:27 CET
Reported upstream here:

https://github.com/fltk/fltk/issues/608
Comment 3 Pierre Ossman cendio 2023-01-02 12:58:14 CET
Upstream has a fix in place, so let's get it into our builds.
Comment 6 Pierre Ossman cendio 2023-01-03 09:04:26 CET
Works much better with a fixed FLTK. I can get the F8 menu right away after leaving full screen.
Comment 7 Tobias cendio 2023-01-10 12:53:49 CET
Tested with server build #2977 on Fedora37 and client builds #2876 (pre-fix) and #2882 (post-fix), on macOS 13.1.

Can confirm that the session windows indeed loses focus with the client pre-fix build when going from full screen to windowed mode. However, this is not the case for the post-fix build, as focus is retained as intended. There seems to be no complication from using multiple screens. Moreover, focus is retained even when bug 8066 occurs. 

Closing.

Note You need to log in before you can comment on or make changes to this bug.