diff options
author | Simon Ser <contact@emersion.fr> | 2021-02-04 20:48:05 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-06-02 11:18:25 +0200 |
commit | 8ff435831f5c79e24ac42b35b141e1f79eb66bc8 (patch) | |
tree | 98e007c40c312e8e858dcc808d72614defceee50 /include | |
parent | b86a0c8d8fa01998b8f9b28b70c18de338cb9236 (diff) |
xdg-activation-v1: new protocol implementation
This implements the new xdg-activation-v1 protocol [1].
[1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/50
Diffstat (limited to 'include')
-rw-r--r-- | include/wlr/types/wlr_xdg_activation_v1.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_xdg_activation_v1.h b/include/wlr/types/wlr_xdg_activation_v1.h new file mode 100644 index 00000000..121e66a1 --- /dev/null +++ b/include/wlr/types/wlr_xdg_activation_v1.h @@ -0,0 +1,61 @@ +/* + * This an unstable interface of wlroots. No guarantees are made regarding the + * future consistency of this API. + */ +#ifndef WLR_USE_UNSTABLE +#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features" +#endif + +#ifndef WLR_TYPES_WLR_XDG_ACTIVATION_V1 +#define WLR_TYPES_WLR_XDG_ACTIVATION_V1 + +#include <wayland-server-core.h> + +struct wlr_xdg_activation_token_v1 { + struct wlr_xdg_activation_v1 *activation; + // The source surface that created the token. + struct wlr_surface *surface; // can be NULL + struct wlr_seat *seat; // can be NULL + // The serial for the input event that created the token. + uint32_t serial; // invalid if seat is NULL + // The application ID to be activated. This is just a hint. + char *app_id; // can be NULL + struct wl_list link; // wlr_xdg_activation_v1.tokens + + // private state + + char *token; + struct wl_resource *resource; // can be NULL + + struct wl_listener seat_destroy; + struct wl_listener surface_destroy; +}; + +struct wlr_xdg_activation_v1 { + + struct wl_list tokens; // wlr_xdg_activation_token_v1.link + + struct { + struct wl_signal destroy; + struct wl_signal request_activate; // wlr_xdg_activation_v1_request_activate_event + } events; + + // private state + + struct wl_global *global; + + struct wl_listener display_destroy; +}; + +struct wlr_xdg_activation_v1_request_activate_event { + struct wlr_xdg_activation_v1 *activation; + // The token used to request activation. + struct wlr_xdg_activation_token_v1 *token; + // The surface requesting for activation. + struct wlr_surface *surface; +}; + +struct wlr_xdg_activation_v1 *wlr_xdg_activation_v1_create( + struct wl_display *display); + +#endif |