[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: macOS child frame lower behavior
From: |
Aaron Jensen |
Subject: |
Re: macOS child frame lower behavior |
Date: |
Thu, 28 May 2020 17:16:31 -0700 |
On Thu, May 28, 2020 at 9:54 AM martin rudalics <rudalics@gmx.at> wrote:
>
> > It apparently means the entire screen list on the desktop.
>
> Sounds bad (though I have no idea what "screen list" stands for).
Yeah, I just read it as list of windows, but who knows if that's
actually what it means.
> > AFAICT, at least in Emacs, it does not do what is described. I created
> > two child frames and attempted to restack them so that the second
> > created one was above the first. This seemed to have no effect.
>
> I see. The code works here as intended with a GNUStep build (under
> Debian's xfwm) so the problem is not on the Emacs side. Does
> 'raise-frame' with two child frames work as intended?
No, it focuses the frame raised, but does not change its layering.
> What happens when
> you have two overlapping child frames and you click into the lower one?
> Does it raise to the top?
No, it does not.
> IIUC the following setup (which works here)
> would fail: Make two normal frames A and B with A overlapping B and on B
> make two child frames C and D where C overlaps D. If you now in frame A
> evaluate (raise-frame D), does as a side-effect B overlap A?
Yes, whatever is done to a child actually impacts the parent.
> If we cannot fix that in some other way, we should probably make
> lowering a child frame a NOOP on MacOS when it is the sole child frame
> of its parent. If there are two child frames, we could try to raise the
> other one, if that works somehow. For more complicated situations, we'd
> have to look whether there exists a z-order for child frames and use
> that.
If you remove a child and re-add it, you can change the order, which
works for raise_frame, because when you add the child frame back it
gets added as the top-most. I don't know how to emulate a lower_frame
short of removing all of the children and then re-adding them in the
proper order (with the one being lowered first). Here's an example of
that working:
https://github.com/aaronjensen/child-frame-order-back-repro
Specifically:
https://github.com/aaronjensen/child-frame-order-back-repro/blob/master/ChildWindowTest/ChildWindowController.m#L24-L47
Aaron