On Sun, Nov 17, 2024 at 12:00:07AM -0500, Aaron Jensen wrote:
The bugged behavior is that `ns-use-native-fullscreen' set to nil is not read when launching emacs.
The attached patch should fix this. The problem is that when the frame is made, the current value of ns-use-native-fullscreen is copied to a variable and that's only reset when the frame goes from fullscreen to windowed. I believe the original intent was to ensure that the mode could not change while the window was fullscreen already.
This resets the value of fs_is_native if the frame is not already fullscreen, which allows it to respect the value at the time of the first fullscreen.
Without this, the only way to get the behavior that Sean is expecting is to set ns-use-native-fullscreen in early-init, which should not be necessary.
The patch looks good here. The only thing is I get this printed to the console:
2024-11-20 21:11:36.609 emacs[18867:241457] ERROR: Can't have a toolbar in a window with <NSNextStepFrame: 0x7f8db350c7e0> as it's borderview
I don't think I've ever seen NextStep explicitly mentioned in macOS code before, other than the "NS" prefix.
I'm going to hazard a guess that the first if at the top of createToolbar needs another test for when we're in non-native fullscreen or something.
Native fullscreen displays the toolbar, non-native doesn't because it uses the borderless stylemask. Perhaps a check on the stylemask would be enough to cover both this and undecorated.