[PATCH] xdg_shell: Adding a new shell protocol.

Bill Spitzak spitzak at gmail.com
Mon Nov 11 11:40:08 PST 2013



Rafael Antognolli wrote:

> +    <request name="move">
> +      <description summary="start an interactive move">
> +	Start a pointer-driven move of the surface.
> +
> +	This request must be used in response to a button press event.
> +	The server may ignore move requests depending on the state of
> +	the surface (e.g. fullscreen or maximized).
> +      </description>
> +      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
> +      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
> +      <art name="cursor_surface" type="object" interface="wl_surface" summary="the cursor surface used during the movement"/>
> +    </request>
> +
> +    <request name="resize">
> +      <description summary="start an interactive resize">
> +	Start a pointer-driven resizing of the surface.
> +
> +	This request must be used in response to a button press event.
> +	The server may ignore resize requests depending on the state of
> +	the surface (e.g. fullscreen or maximized).
> +      </description>
> +      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
> +      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
> +      <arg name="edges" type="uint" summary="which edge or corner is being dragged"/>
> +      <art name="cursor_surface" type="object" interface="wl_surface" summary="the cursor surface used during the resizing"/>
> +    </request>

I would merge these two requests since there really is no difference.

The new request should look like the resize one, with a new enumeration 
value 16 to indicate move and/or titlebar. The "none" value means 
"compositor can choose anything to do" and should be sent for clicks in 
the contents area in most cases. I did not use 15 for move because that 
might want to mean "symmetric resize about center". Also it may be 
useful to combine the titlebar indicator with an edge flag in case the 
titlebar is not at the top or is on more than one side.

In addition there should be a "preview" request. It takes exactly the 
same arguments but is in response to a mouse move. It indicates the the 
compositor that if the mouse is clicked the above will be called, and 
the compositor can use this to preview by changing the cursor or drawing 
overlays (there also has to be a "cancel preview" request).

It may not be clear but one thing I would like supported are "thick" 
resize areas. The client does not have to draw resize borders, provided 
there are "dead" areas near the edges of the window that the user can 
click on and call the above. The client can send 0 for "what" to let the 
compositor decide how thick the edges are.



More information about the wayland-devel mailing list