Subject: bug#36672: 27.0.50; NS build: Creating child frame leads to empty space

From: Alan Third <[email-masked]>
Date: Tue, 16 Jul 2019 20:28:22 +0100

On Mon, Jul 15, 2019 at 08:38:31PM +0300, Andrii Kolomoiets wrote:
> Assume there are only one space - Desktop
> 1. emacs -Q
> 2. M-x toggle-frame-fullscreen
>    Now there are two spaces - Desktop and *scratch*
> 3. eval (make-frame `((parent-frame . ,(window-frame))))
>    Now there are three spaces:
>    - Desktop
>    - Empty space named *scratch* with emacs menu
>    - *scratch* with emacs frames but without menu

I hit C-x C-c at this point to exit Emacs and it completely crashed my
session. Not great...

The patch looks good to me, but lets see if we can find solutions to
these other issues. To be honest, given that Apple don’t provide any
way to properly deal with spaces, I’d expect this stuff to be handled
sensibly by default, but I guess that’s too much to ask.

> 1. Removing parent-frame property leaves the frame is same space:
> 
> (let ((new-frame (make-frame `((parent-frame . ,(window-frame))))))
>   (modify-frame-parameters new-frame `((parent-frame . nil))))
> 
> Maybe child frame must go fullscreen if ex-parent frame is in
> fullscreen.

I suppose the best thing to do would be to move it onto the first
space, but there’s no API for that, apparently. Going fullscreen seems
like a reasonable work‐around to me.

> 2. Setting parent frame after frame creation:
> 
> (let ((frame (window-frame))
>       (new-frame (make-frame)))
>   (modify-frame-parameters new-frame `((parent-frame . ,frame))))

What do you see happening in this case? I’ve got spaces turned on and
everything I do just seems to create a new fullscreen space (except
when it crashes my session).

-- 
Alan Third