On Sun, Jul 07, 2019 at 09:05:02AM -0400 I heard the voice of
Stefan Monnier, and lo! it spake thus:
> 
> From what I remember of the time I wrote and debugged OTP, these
> problems were invariably due to things like calling RaiseWindow
> instead of OtpRaiseWindow.

That would lead to assertion failures where it compares against the X
window stack.  These troubles are triggering a bit earlier, on the

    assert(PRI(owl) >= priority);

e.g., the priority isn't monotonically increasing from the bottom->top
of the OWL.  This got trickier with the _FULLSCREEN stuff, where the
effective OTP of a window now depends on whether it has focus or not,
so it has to get reshuffled as a side effect of the focus change,
rather than an explicit raise/lower or OTP change.

And, in this case, DOUBLE tricky, because its transients have to move
with it; when a _FULLSCREEN window is focused, it transients are
jumped up with it, and when it's unfocused, they have to move down
too.  So any given window's OTP isn't even dependent solely on whether
_it_ has focus, we get to worry about its "family tree", too.


-- 
Matthew Fuller     (MF4839)   |  fulle...@over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.

Reply via email to