Subject: bug#25408: Remove Decorations Around Emacs Frame (Windows OS)

From: Alan Third <[email-masked]>
Date: Sat, 15 Apr 2017 17:29:22 +0100

I’ve done some further reading.

On Thu, Apr 13, 2017 at 09:10:26AM +0200, martin rudalics wrote:
> Can you look also into three other things I added:
> 
> - Provide a `move-frame-functions' hook.
> 
> - Provide "frame restacking" which should work via orderWindow.  I
>   suppose NS has no equivalent for z-groups.

If I understand your description right, there is a direct equivalent
for z‐groups: levels. Here’s Apple’s documentation on them:

> The levels you typically use are: NSNormalWindowLevel, which
> specifies the default level; NSFloatingWindowLevel, which specifies
> the level for floating palettes; and NSScreenSaverWindowLevel, which
> specifies the level for a screen saver window. You might also use
> NSStatusWindowLevel for a status window, or NSModalPanelWindowLevel
> for a modal panel.

This is in addition to the basic ‘layers’, which orderWindow deals
with and which only affects windows in the same ‘level’.

> - Provide "child frames" which should work via parentWindow.
> 
> I don't know whether NS child windows always behave like NS "drawers" or
> may also occlude the parent frame like under X or Windows.  Eventually
> I'd like to have them both (like Wayland's subsurfaces if I understand
> them correctly).  Drawers look like a pain when you are in fullscreen
> mode - IIUC there's no way to open them "into" a fullscreen frame.
> X/Windows child windows are annoying when you are in a normal, fairly
> small frame where they get clipped too easily.

It appears that a child window in NS is just a normal window which
moves and closes with its parent. So I think that means it’s more like
X’s child windows, except they don’t get clipped at the parent
window’s edges. They can also end up below the parent window.

I think this is probably what we want, for now at least.

FYI: there are also drawers and something called sheets, which appear
to be some sort of special modal drawer type thing used for error
messages and such.

I’ve pretty much got the undecorated frames sorted with only one major
bug I’m aware of when the frame is nearly the full height of the
screen. I think I may have to ask Anders about that as I can’t
understand the code that keeps the frame on‐screen, and I think it may
be the culprit.
-- 
Alan Third