Subject: bug#25408: Remove Decorations Around Emacs Frame (NS port)

From: martin rudalics <[email-masked]>
Date: Wed, 19 Apr 2017 18:01:52 +0200

> It turns out that GNUStep doesn’t let you change the decorated state
 > of an existing window.

OK.  It's not important that the GNUStep build is capable of doing
anything useful.  It should build and if possible not crash.  The only
person currently using it (only for checking whether a change might
break the NS build) is me, I presume.

 > It should be able to create a new undecorated
 > window.

It does so.

 > I believe it is setting the parent/child relationship, but in GNUStep
 > it doesn’t seem to mean the child moves with the parent. I think this
 > is a bug in GNUStep, but the behaviour isn’t documented yet, so I’m
 > not sure if it’s intentional.
 >
 > The child will minimise and close with the parent and moving it to (0
 > 0) will put it in the top left corner of the parent.

It is created initially at the top left corner of the parent frame and
inconifies and deiconifies correctly with its parent.

 > Except it doesn’t quite, because there’s a hard‐coded titlebar height
 > for GNUStep which is guaranteed to be wrong for every WM. At least I
 > think that’s what going on.

The top edge is below the native top edge of the parent by a few pixels,
maybe the two Anders mentioned.  Nothing to worry about.

 > Z‐groups are working, but again in GNUStep it seems a bit hit and miss
 > as the frames seem to forget their state if you click on their
 > titlebars.

Don't worry.  I just tried to type something and when I reached the
right edge of the window I got an abort as

2017-04-19 17:36:59.480 emacs[4423] Problem posting notification: <NSException: 0x4167070> NAME:NSInvalidArgumentException REASON:-[EmacsImage XBM:width:height:fg:bg:]: unrecognized selector sent to instance 0x3e0bf40 INFO:(null)
/home/martin/emacs-git/trunk/obj-ns/src/emacs: Uncaught exception NSInvalidArgumentException, reason: -[EmacsImage XBM:width:height:fg:bg:]: unrecognized selector sent to instance 0x3ec20a0

As it is, the GNUStep build is certainly not suited for doing anything
useful at the moment.

I think you should install your changes so people can test them.

In the ChangeLog please fix the below:

 > (Fx-create_frame): Handle 'z-code', 'parent-frame' and 'undecorated'

    Fx_create_frame          'z-group'

Many thanks, martin