GNU bug report logs - #36672
27.0.50; NS build: Creating child frame leads to empty space

Previous Next

Package: emacs;

Reported by: Andrii Kolomoiets <andreyk.mad <at> gmail.com>

Date: Mon, 15 Jul 2019 17:39:01 UTC

Severity: normal

Found in version 27.0.50

Done: Alan Third <alan <at> idiocy.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Andrii Kolomoiets <andreyk.mad <at> gmail.com>
To: Alan Third <alan <at> idiocy.org>
Cc: 36672 <at> debbugs.gnu.org
Subject: bug#36672: 27.0.50; NS build: Creating child frame leads to empty space
Date: Wed, 17 Jul 2019 21:51:47 +0300
[Message part 1 (text/plain, inline)]
On Jul 16, 2019, at 22:28, Alan Third <alan <at> idiocy.org> wrote:
> 
> 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.
> 

I manage to make this code work. Please see attached updated patch.
But this patch is not completely ready as it missing compilation conditions.
Just hope you find it useful.

>> 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).
> 

I see same result as in the first case: Desktop, empty blank space
with Emacs menu, space with Emacs frame and no menu/titlebar.

Still can't make this case work. Probably window animation stand in the way:

nsterm.m  : 1869: [  376]  ns_set_parent_frame
nsterm.m  : 1912: [  377]  | child frame must not be in fullscreen
2019-07-17 21:20:49.027 Emacs[91925:3597098] not in fullscreen state

If ns_set_parent_frame is called while window is still in process of going
full screen then maybe it must be deferred until animation ends.
[ns-emacs-spaces-wip.patch (application/octet-stream, attachment)]

This bug report was last modified 5 years and 73 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.