[Question] Z-order management in Wayland

Carsten Haitzler (The Rasterman) raster at rasterman.com
Thu Jul 31 19:27:11 PDT 2014


On Thu, 31 Jul 2014 15:44:40 -0700 Bill Spitzak <spitzak at gmail.com> said:

> On 07/31/2014 03:21 PM, Carsten Haitzler (The Rasterman) wrote:
> 
> >> Wait a second, how is click-to-raise being done?
> >
> > not by the client - by the compositor. the client has no control over that.
> 
> That does not work. The client has to be able to decide whether a mouse 
> click will raise the window.

no it doesn't. it doesn't work like that in x11 and things work just fine. i've
been doing wm's and toolkits for a long time. wayland is well designed, if
perhaps a little spartan. :)

> The most obvious thing that does not work is drag & drop.

what has that got to do with a click raising or not? dnd is a separate protocol
element with its own semantics.

> It makes it impossible for a click to both raise the window and create a 
> floating window without blinking.

not so. :) as dnd is triggered on a DRAG = the mouse has MOVED beyond a
certain threshold beyond the place that the click happened - the creation of a
dnd icon is long after the click and the raise. this is precisely how it works
in x11 today - the click is intercepted by the wm with a passive grab and an
allow events to hand it on. that click may cause the wm to raise the window.
even the override-redirect window the client makes for dnd is fine...

in wayland dnd is a special thing and the compositor is directly involved

> And unless something MUCH more complicated than the current parent in 
> xdg_shell is used, it makes multiple-window software impossible. At 
> least a full Directed Acyclic Graph of multiple parents for every 
> surface is needed, though I really suspect an entire interpreted 
> language is needed to describe window stacking.
> 
> This has to be fixed or you are violating the "every frame is perfect" 
> design criteria for Wayland.

nope. when a drag starts an icon surface (to be dragged about) it given to the
compositor. the compositor can happily ensure that that surface is at the
correct x/y AND always above everything - like the mouse pointer. lok at the
start_drag protocol request. :)

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    raster at rasterman.com



More information about the wayland-devel mailing list