Subject: bug#59790: 30.0.50; ns-use-native-fullscreen is not respected for first use of initial-frame-alist

From: Alan Third <[email-masked]>
Date: Wed, 20 Nov 2024 21:27:09 +0000

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.

-- 
Alan Third