Improve shell window stacking ordering

Kristian Høgsberg hoegsberg at
Mon Dec 2 15:22:21 PST 2013

On Mon, Nov 25, 2013 at 06:01:29PM +0000, Philip Withnall wrote:
> Here’s a series of patches which work towards improving the shell window stacking. They clean up the code and implement a more organised approach to stacking. They add a new test client, weston-stacking, for testing window stacking and ordering.
> I don’t claim the ordering they impose is perfect, but it seems to at least be on parity with the current behaviour, and fixes the following bug:

I'm not sure I understand that bug.  But your patches are a good
cleanup and solves the problem where we don't raise the transient
windows for a surface when we raise it.

> Open questions for review:
>  • This probably doesn’t work with non-shell_surface surfaces.
>  • Do we expect popup (and transient)-type surfaces to be parentable to other popup or transient surfaces? Or is the hierarchy at most one layer deep?

There's a couple of things that are still odd - if you have two
sibling transients, click on one will lower it below the other
sibling.  The other thing is the xwayland code in shell.c, where we
don't reflect the transient_for relation coming from the X window
properties into the shell.  When we added the new (internal) xwayland
shell surface type, we stopped making xwayland surfaces transient for,
and that's why xwayland popups and don't show up for fullscreen X

Somewhat unrelated, I noticed that we need to take a keyboard grab for
the popup windows which will prevent exposy and alt-tab with a menu
popped up.  Once we have a keyboard grab, we can make ESC cancels the
popup as well.

But we need to wait for Rafaels xdg-shell patches to land first.


More information about the wayland-devel mailing list