aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
authorKirill Primak <vyivel@eclair.cafe>2023-07-26 11:36:24 +0300
committerSimon Ser <contact@emersion.fr>2023-08-21 16:30:29 +0000
commitbd5c4f4a4a79743df77db40d18eb32686312f320 (patch)
treea4da0ff37ddf84f2f88588a658f0f2fa0ae6d728 /include/wlr
parente5300c225ee81d08111f22196d777730791f99bc (diff)
xdg-shell: rework roles
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/types/wlr_xdg_shell.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h
index 9cae226c..1b15bfe4 100644
--- a/include/wlr/types/wlr_xdg_shell.h
+++ b/include/wlr/types/wlr_xdg_shell.h
@@ -231,8 +231,18 @@ struct wlr_xdg_surface {
struct wl_resource *resource;
struct wlr_surface *surface;
struct wl_list link; // wlr_xdg_client.surfaces
+
+ /**
+ * The lifetime-bound role of the xdg_surface. WLR_XDG_SURFACE_ROLE_NONE
+ * if the role was never set.
+ */
enum wlr_xdg_surface_role role;
+ /**
+ * The role object representing the role. NULL if the object was destroyed.
+ */
+ struct wl_resource *role_resource;
+ // NULL if the role resource is inert
union {
struct wlr_xdg_toplevel *toplevel;
struct wlr_xdg_popup *popup;
@@ -247,8 +257,6 @@ struct wlr_xdg_surface {
struct wlr_xdg_surface_state current, pending;
- struct wl_listener surface_commit;
-
struct {
struct wl_signal destroy;
struct wl_signal ping_timeout;
@@ -260,6 +268,11 @@ struct wlr_xdg_surface {
} events;
void *data;
+
+ // private state
+
+ bool client_mapped;
+ struct wl_listener role_resource_destroy;
};
struct wlr_xdg_toplevel_move_event {