1 From 5cd43dc7519f54f9786fb6c686a2ce1e682d4366 Mon Sep 17 00:00:00 2001
2 From: Philippe Coval <philippe.coval@open.eurogiciel.org>
3 Date: Fri, 25 Apr 2014 10:31:42 +0200
4 Subject: [PATCH 16/21] xdg-shell: Add xdg-shell protocol file version 1.4.0
6 Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.4.0
8 This file will need to be refreshed on protocol update
9 until xdg-shell land in wayland's public headers
11 Task-number: QTBUG-38633/part/1of2
12 Change-Id: I397d863dcfc2223ac6eb234c37dbcd7449ecffff
13 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
14 Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/c2a22eea6716e073875474adf624d8463eba836c
15 Bug-Tizen: TIVI-3113/part
16 Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
18 src/3rdparty/protocol/xdg-shell.xml | 438 ++++++++++++++++++++++++++++++++++++
19 1 file changed, 438 insertions(+)
20 create mode 100644 src/3rdparty/protocol/xdg-shell.xml
22 diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml
24 index 0000000..4e5cff8
26 +++ b/src/3rdparty/protocol/xdg-shell.xml
28 +<?xml version="1.0" encoding="UTF-8"?>
29 +<protocol name="xdg_shell">
32 + Copyright © 2008-2013 Kristian Høgsberg
33 + Copyright © 2013 Rafael Antognolli
34 + Copyright © 2013 Jasper St. Pierre
35 + Copyright © 2010-2013 Intel Corporation
37 + Permission to use, copy, modify, distribute, and sell this
38 + software and its documentation for any purpose is hereby granted
39 + without fee, provided that the above copyright notice appear in
40 + all copies and that both that copyright notice and this permission
41 + notice appear in supporting documentation, and that the name of
42 + the copyright holders not be used in advertising or publicity
43 + pertaining to distribution of the software without specific,
44 + written prior permission. The copyright holders make no
45 + representations about the suitability of this software for any
46 + purpose. It is provided "as is" without express or implied
49 + THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
50 + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
51 + FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
52 + SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
53 + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
54 + AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
55 + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
59 + <interface name="xdg_shell" version="1">
60 + <description summary="create desktop-style surfaces">
61 + This interface is implemented by servers that provide
62 + desktop-style user interfaces.
64 + It allows clients to associate a xdg_surface with
68 + <enum name="version">
69 + <description summary="latest protocol version">
70 + Use this enum to check the protocol version, and it will be updated
73 + <entry name="current" value="1" summary="Always the latest version"/>
77 + <request name="use_unstable_version">
78 + <description summary="enable use of this unstable version">
79 + Use this request in order to enable use of this interface.
81 + Understand and agree that one is using an unstable interface,
82 + that will likely change in the future, breaking the API.
84 + <arg name="version" type="int"/>
87 + <request name="get_xdg_surface">
88 + <description summary="create a shell surface from a surface">
89 + Create a shell surface for an existing surface.
91 + Only one shell or popup surface can be associated with a given
94 + <arg name="id" type="new_id" interface="xdg_surface"/>
95 + <arg name="surface" type="object" interface="wl_surface"/>
98 + <request name="get_xdg_popup">
99 + <description summary="create a shell surface from a surface">
100 + Create a popup surface for an existing surface.
102 + Only one shell or popup surface can be associated with a given
105 + <arg name="id" type="new_id" interface="xdg_popup"/>
106 + <arg name="surface" type="object" interface="wl_surface"/>
107 + <arg name="parent" type="object" interface="wl_surface"/>
108 + <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
109 + <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
110 + <arg name="x" type="int"/>
111 + <arg name="y" type="int"/>
112 + <arg name="flags" type="uint"/>
116 + <interface name="xdg_surface" version="1">
118 + <description summary="desktop-style metadata interface">
119 + An interface that may be implemented by a wl_surface, for
120 + implementations that provide a desktop-style user interface.
122 + It provides requests to treat surfaces like windows, allowing to set
123 + properties like maximized, fullscreen, minimized, and to move and resize
124 + them, and associate metadata like title and app id.
126 + On the server side the object is automatically destroyed when
127 + the related wl_surface is destroyed. On client side,
128 + xdg_surface.destroy() must be called before destroying
129 + the wl_surface object.
132 + <request name="destroy" type="destructor">
133 + <description summary="remove xdg_surface interface">
134 + The xdg_surface interface is removed from the wl_surface object
135 + that was turned into a xdg_surface with
136 + xdg_shell.get_xdg_surface request. The xdg_surface properties,
137 + like maximized and fullscreen, are lost. The wl_surface loses
138 + its role as a xdg_surface. The wl_surface is unmapped.
142 + <request name="set_transient_for">
143 + <description summary="surface is a child of another surface">
144 + Setting a surface as transient of another means that it is child
145 + of another surface.
147 + Child surfaces are stacked above their parents, and will be
148 + unmapped if the parent is unmapped too. They should not appear
149 + on task bars and alt+tab.
151 + <arg name="parent" type="object" interface="wl_surface" allow-null="true"/>
154 + <request name="set_title">
155 + <description summary="set surface title">
156 + Set a short title for the surface.
158 + This string may be used to identify the surface in a task bar,
159 + window list, or other user interface elements provided by the
162 + The string must be encoded in UTF-8.
164 + <arg name="title" type="string"/>
167 + <request name="set_app_id">
168 + <description summary="set surface class">
169 + Set an id for the surface.
171 + The app id identifies the general class of applications to which
172 + the surface belongs.
174 + It should be the ID that appears in the new desktop entry
175 + specification, the interface name.
177 + <arg name="app_id" type="string"/>
180 + <request name="pong">
181 + <description summary="respond to a ping event">
182 + A client must respond to a ping event with a pong request or
183 + the client may be deemed unresponsive.
185 + <arg name="serial" type="uint" summary="serial of the ping event"/>
188 + <event name="ping">
189 + <description summary="ping client">
190 + Ping a client to check if it is receiving events and sending
191 + requests. A client is expected to reply with a pong request.
193 + <arg name="serial" type="uint"/>
196 + <request name="move">
197 + <description summary="start an interactive move">
198 + Start a pointer-driven move of the surface.
200 + This request must be used in response to a button press event.
201 + The server may ignore move requests depending on the state of
202 + the surface (e.g. fullscreen or maximized).
204 + <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
205 + <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
208 + <enum name="resize_edge">
209 + <description summary="edge values for resizing">
210 + These values are used to indicate which edge of a surface
211 + is being dragged in a resize operation. The server may
212 + use this information to adapt its behavior, e.g. choose
213 + an appropriate cursor image.
215 + <entry name="none" value="0"/>
216 + <entry name="top" value="1"/>
217 + <entry name="bottom" value="2"/>
218 + <entry name="left" value="4"/>
219 + <entry name="top_left" value="5"/>
220 + <entry name="bottom_left" value="6"/>
221 + <entry name="right" value="8"/>
222 + <entry name="top_right" value="9"/>
223 + <entry name="bottom_right" value="10"/>
226 + <request name="resize">
227 + <description summary="start an interactive resize">
228 + Start a pointer-driven resizing of the surface.
230 + This request must be used in response to a button press event.
231 + The server may ignore resize requests depending on the state of
232 + the surface (e.g. fullscreen or maximized).
234 + <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
235 + <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
236 + <arg name="edges" type="uint" summary="which edge or corner is being dragged"/>
239 + <event name="configure">
240 + <description summary="suggest resize">
241 + The configure event asks the client to resize its surface.
243 + The size is a hint, in the sense that the client is free to
244 + ignore it if it doesn't resize, pick a smaller size (to
245 + satisfy aspect ratio or resize in steps of NxM pixels).
247 + The edges parameter provides a hint about how the surface
248 + was resized. The client may use this information to decide
249 + how to adjust its content to the new size (e.g. a scrolling
250 + area might adjust its content position to leave the viewable
251 + content unmoved). Valid edge values are from resize_edge enum.
253 + The client is free to dismiss all but the last configure
256 + The width and height arguments specify the size of the window
257 + in surface local coordinates.
260 + <arg name="edges" type="uint"/>
261 + <arg name="width" type="int"/>
262 + <arg name="height" type="int"/>
265 + <request name="set_output">
266 + <description summary="set the default output used by this surface">
267 + Set the default output used by this surface when it is first mapped.
269 + If this value is NULL (default), it's up to the compositor to choose
270 + which display will be used to map this surface.
272 + When fullscreen or maximized state are set on this surface, and it
273 + wasn't mapped yet, the output set with this method will be used.
274 + Otherwise, the output where the surface is currently mapped will be
277 + <arg name="output" type="object" interface="wl_output" allow-null="true"/>
280 + <event name="request_set_fullscreen">
281 + <description summary="server requests that the client set fullscreen">
282 + Event sent from the compositor to the client requesting that the client
283 + goes to a fullscreen state. It's the client job to call set_fullscreen
284 + and really trigger the fullscreen state.
288 + <event name="request_unset_fullscreen">
289 + <description summary="server requests that the client unset fullscreen">
290 + Event sent from the compositor to the client requesting that the client
291 + leaves the fullscreen state. It's the client job to call
292 + unset_fullscreen and really leave the fullscreen state.
296 + <request name="set_fullscreen">
297 + <description summary="set the surface state as fullscreen">
298 + Set the surface as fullscreen.
300 + After this request, the compositor should send a configure event
301 + informing the output size.
303 + This request informs the compositor that the next attached buffer
304 + committed will be in a fullscreen state. The buffer size should be the
305 + same size as the size informed in the configure event, if the client
306 + doesn't want to leave any empty area.
308 + In other words: the next attached buffer after set_maximized is the new
309 + maximized buffer. And the surface will be positioned at the maximized
310 + position on commit.
312 + A simple way to synchronize and wait for the correct configure event is
313 + to use a wl_display.sync request right after the set_fullscreen
314 + request. When the sync callback returns, the last configure event
315 + received just before it will be the correct one, and should contain the
316 + right size for the surface to maximize.
318 + Setting one state won't unset another state. Use
319 + xdg_surface.unset_fullscreen for unsetting it.
323 + <request name="unset_fullscreen">
324 + <description summary="unset the surface state as fullscreen">
325 + Unset the surface fullscreen state.
327 + Same negotiation as set_fullscreen must be used.
331 + <event name="request_set_maximized">
332 + <description summary="server requests that the client set maximized">
333 + Event sent from the compositor to the client requesting that the client
334 + goes to a maximized state. It's the client job to call set_maximized
335 + and really trigger the maximized state.
339 + <event name="request_unset_maximized">
340 + <description summary="server requests that the client unset maximized">
341 + Event sent from the compositor to the client requesting that the client
342 + leaves the maximized state. It's the client job to call unset_maximized
343 + and really leave the maximized state.
347 + <request name="set_maximized">
348 + <description summary="set the surface state as maximized">
349 + Set the surface as maximized.
351 + After this request, the compositor will send a configure event
352 + informing the output size minus panel and other MW decorations.
354 + This request informs the compositor that the next attached buffer
355 + committed will be in a maximized state. The buffer size should be the
356 + same size as the size informed in the configure event, if the client
357 + doesn't want to leave any empty area.
359 + In other words: the next attached buffer after set_maximized is the new
360 + maximized buffer. And the surface will be positioned at the maximized
361 + position on commit.
363 + A simple way to synchronize and wait for the correct configure event is
364 + to use a wl_display.sync request right after the set_maximized request.
365 + When the sync callback returns, the last configure event received just
366 + before it will be the correct one, and should contain the right size
367 + for the surface to maximize.
369 + Setting one state won't unset another state. Use
370 + xdg_surface.unset_maximized for unsetting it.
374 + <request name="unset_maximized">
375 + <description summary="unset the surface state as maximized">
376 + Unset the surface maximized state.
378 + Same negotiation as set_maximized must be used.
382 + <request name="set_minimized">
383 + <description summary="set the surface state as minimized">
384 + Set the surface minimized state.
386 + Setting one state won't unset another state.
390 + <event name="focused_set">
391 + <description summary="surface was focused">
392 + The focused_set event is sent when this surface has been
393 + activated. Window decorations should be updated accordingly.
397 + <event name="focused_unset">
398 + <description summary="surface was unfocused">
399 + The focused_unset event is sent when this surface has been
400 + deactivated, because another surface has been activated. Window
401 + decorations should be updated accordingly.
406 + <interface name="xdg_popup" version="1">
407 + <description summary="desktop-style metadata interface">
408 + An interface that may be implemented by a wl_surface, for
409 + implementations that provide a desktop-style popups/menus. A popup
410 + surface is a transient surface with an added pointer grab.
412 + An existing implicit grab will be changed to owner-events mode,
413 + and the popup grab will continue after the implicit grab ends
414 + (i.e. releasing the mouse button does not cause the popup to be
417 + The popup grab continues until the window is destroyed or a mouse
418 + button is pressed in any other clients window. A click in any of
419 + the clients surfaces is reported as normal, however, clicks in
420 + other clients surfaces will be discarded and trigger the callback.
422 + The x and y arguments specify the locations of the upper left
423 + corner of the surface relative to the upper left corner of the
424 + parent surface, in surface local coordinates.
426 + xdg_popup surfaces are always transient for another surface.
429 + <request name="destroy" type="destructor">
430 + <description summary="remove xdg_surface interface">
431 + The xdg_surface interface is removed from the wl_surface object
432 + that was turned into a xdg_surface with
433 + xdg_shell.get_xdg_surface request. The xdg_surface properties,
434 + like maximized and fullscreen, are lost. The wl_surface loses
435 + its role as a xdg_surface. The wl_surface is unmapped.
439 + <request name="pong">
440 + <description summary="respond to a ping event">
441 + A client must respond to a ping event with a pong request or
442 + the client may be deemed unresponsive.
444 + <arg name="serial" type="uint" summary="serial of the ping event"/>
447 + <event name="ping">
448 + <description summary="ping client">
449 + Ping a client to check if it is receiving events and sending
450 + requests. A client is expected to reply with a pong request.
452 + <arg name="serial" type="uint"/>
455 + <event name="popup_done">
456 + <description summary="popup interaction is done">
457 + The popup_done event is sent out when a popup grab is broken,
458 + that is, when the users clicks a surface that doesn't belong
459 + to the client owning the popup surface.
461 + <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>