1// Hand-edited to resolve conflicts with xdg-shell stable
2/*
3 * Copyright © 2008-2013 Kristian Høgsberg
4 * Copyright © 2013 Rafael Antognolli
5 * Copyright © 2013 Jasper St. Pierre
6 * Copyright © 2010-2013 Intel Corporation
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice (including the next
16 * paragraph) shall be included in all copies or substantial portions of the
17 * Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 * DEALINGS IN THE SOFTWARE.
26 */
27#ifndef QT_WAYLAND_XDG_SHELL_UNSTABLE_V5
28#define QT_WAYLAND_XDG_SHELL_UNSTABLE_V5
29
30#include "wayland-xdg-shell-unstable-v5-client-protocol_p.h"
31#include <QByteArray>
32#include <QString>
33
34struct wl_registry;
35
36QT_BEGIN_NAMESPACE
37QT_WARNING_PUSH
38QT_WARNING_DISABLE_GCC("-Wmissing-field-initializers")
39
40namespace QtWayland {
41 class xdg_shell_v5
42 {
43 public:
44 xdg_shell_v5(struct ::wl_registry *registry, int id, int version);
45 xdg_shell_v5(struct ::xdg_shell_v5 *object);
46 xdg_shell_v5();
47
48 virtual ~xdg_shell_v5();
49
50 void init(struct ::wl_registry *registry, int id, int version);
51 void init(struct ::xdg_shell_v5 *object);
52
53 struct ::xdg_shell_v5 *object() { return m_xdg_shell; }
54 const struct ::xdg_shell_v5 *object() const { return m_xdg_shell; }
55
56 bool isInitialized() const;
57
58 static const struct ::wl_interface *interface();
59
60 enum version {
61 version_current = 5 // Always the latest version
62 };
63
64 enum error {
65 error_role = 0, // given wl_surface has another role
66 error_defunct_surfaces = 1, // xdg_shell was destroyed before children
67 error_not_the_topmost_popup = 2, // the client tried to map or destroy a non-topmost popup
68 error_invalid_popup_parent = 3 // the client specified an invalid popup parent surface
69 };
70
71 void destroy();
72 void use_unstable_version(int32_t version);
73 struct ::xdg_surface_v5 *get_xdg_surface(struct ::wl_surface *surface);
74 struct ::xdg_popup_v5 *get_xdg_popup(struct ::wl_surface *surface, struct ::wl_surface *parent, struct ::wl_seat *seat, uint32_t serial, int32_t x, int32_t y);
75 void pong(uint32_t serial);
76
77 protected:
78 virtual void xdg_shell_ping(uint32_t serial);
79
80 private:
81 void init_listener();
82 static const struct xdg_shell_listener m_xdg_shell_listener;
83 static void handle_ping(
84 void *data,
85 struct ::xdg_shell_v5 *object,
86 uint32_t serial);
87 struct ::xdg_shell_v5 *m_xdg_shell;
88 };
89
90 class xdg_surface_v5
91 {
92 public:
93 xdg_surface_v5(struct ::wl_registry *registry, int id, int version);
94 xdg_surface_v5(struct ::xdg_surface_v5 *object);
95 xdg_surface_v5();
96
97 virtual ~xdg_surface_v5();
98
99 void init(struct ::wl_registry *registry, int id, int version);
100 void init(struct ::xdg_surface_v5 *object);
101
102 struct ::xdg_surface_v5 *object() { return m_xdg_surface; }
103 const struct ::xdg_surface_v5 *object() const { return m_xdg_surface; }
104
105 bool isInitialized() const;
106
107 static const struct ::wl_interface *interface();
108
109 enum resize_edge {
110 resize_edge_none = 0,
111 resize_edge_top = 1,
112 resize_edge_bottom = 2,
113 resize_edge_left = 4,
114 resize_edge_top_left = 5,
115 resize_edge_bottom_left = 6,
116 resize_edge_right = 8,
117 resize_edge_top_right = 9,
118 resize_edge_bottom_right = 10
119 };
120
121 enum state {
122 state_maximized = 1, // the surface is maximized
123 state_fullscreen = 2, // the surface is fullscreen
124 state_resizing = 3,
125 state_activated = 4
126 };
127
128 void destroy();
129 void set_parent(struct ::xdg_surface_v5 *parent);
130 void set_title(const QString &title);
131 void set_app_id(const QString &app_id);
132 void show_window_menu(struct ::wl_seat *seat, uint32_t serial, int32_t x, int32_t y);
133 void move(struct ::wl_seat *seat, uint32_t serial);
134 void resize(struct ::wl_seat *seat, uint32_t serial, uint32_t edges);
135 void ack_configure(uint32_t serial);
136 void set_window_geometry(int32_t x, int32_t y, int32_t width, int32_t height);
137 void set_maximized();
138 void unset_maximized();
139 void set_fullscreen(struct ::wl_output *output);
140 void unset_fullscreen();
141 void set_minimized();
142
143 protected:
144 virtual void xdg_surface_configure(int32_t width, int32_t height, wl_array *states, uint32_t serial);
145 virtual void xdg_surface_close();
146
147 private:
148 void init_listener();
149 static const struct xdg_surface_listener m_xdg_surface_listener;
150 static void handle_configure(
151 void *data,
152 struct ::xdg_surface_v5 *object,
153 int32_t width,
154 int32_t height,
155 wl_array *states,
156 uint32_t serial);
157 static void handle_close(
158 void *data,
159 struct ::xdg_surface_v5 *object);
160 struct ::xdg_surface_v5 *m_xdg_surface;
161 };
162
163 class xdg_popup_v5
164 {
165 public:
166 xdg_popup_v5(struct ::wl_registry *registry, int id, int version);
167 xdg_popup_v5(struct ::xdg_popup_v5 *object);
168 xdg_popup_v5();
169
170 virtual ~xdg_popup_v5();
171
172 void init(struct ::wl_registry *registry, int id, int version);
173 void init(struct ::xdg_popup_v5 *object);
174
175 struct ::xdg_popup_v5 *object() { return m_xdg_popup; }
176 const struct ::xdg_popup_v5 *object() const { return m_xdg_popup; }
177
178 bool isInitialized() const;
179
180 static const struct ::wl_interface *interface();
181
182 void destroy();
183
184 protected:
185 virtual void xdg_popup_popup_done();
186
187 private:
188 void init_listener();
189 static const struct xdg_popup_listener m_xdg_popup_listener;
190 static void handle_popup_done(
191 void *data,
192 struct ::xdg_popup_v5 *object);
193 struct ::xdg_popup_v5 *m_xdg_popup;
194 };
195}
196
197QT_WARNING_POP
198QT_END_NAMESPACE
199
200#endif
201

source code of qtwayland/src/plugins/shellintegration/xdg-shell-v5/pregenerated/3rdparty/qwayland-xdg-shell-unstable-v5_p.h