From 8ff435831f5c79e24ac42b35b141e1f79eb66bc8 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 4 Feb 2021 20:48:05 +0100 Subject: 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 --- include/wlr/types/wlr_xdg_activation_v1.h | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 include/wlr/types/wlr_xdg_activation_v1.h (limited to 'include/wlr') 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 + +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 -- cgit v1.2.3