[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