diff options
| author | emersion <contact@emersion.fr> | 2018-06-10 11:15:26 +0100 | 
|---|---|---|
| committer | emersion <contact@emersion.fr> | 2018-07-28 22:48:07 +0100 | 
| commit | 555721f7142e1e363c17820657fb1e2b004e7c54 (patch) | |
| tree | 61bf9363d2b60a2b62f4e853cf32d960f3a08a1e /include/wlr | |
| parent | b6ed1f29a4dbba93eb53c32ec5492db8ee1d9343 (diff) | |
| download | wlroots-555721f7142e1e363c17820657fb1e2b004e7c54.tar.xz | |
Add xdg-decoration-unstable-v1 support
Diffstat (limited to 'include/wlr')
| -rw-r--r-- | include/wlr/types/wlr_xdg_decoration_v1.h | 68 | ||||
| -rw-r--r-- | include/wlr/types/wlr_xdg_shell.h | 18 | 
2 files changed, 84 insertions, 2 deletions
| diff --git a/include/wlr/types/wlr_xdg_decoration_v1.h b/include/wlr/types/wlr_xdg_decoration_v1.h new file mode 100644 index 00000000..10d3a1aa --- /dev/null +++ b/include/wlr/types/wlr_xdg_decoration_v1.h @@ -0,0 +1,68 @@ +#ifndef WLR_TYPES_WLR_XDG_DECORATION_V1 +#define WLR_TYPES_WLR_XDG_DECORATION_V1 + +#include <wayland-server.h> +#include <wlr/types/wlr_xdg_shell.h> + +enum wlr_xdg_toplevel_decoration_v1_mode { +	WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_NONE = 0, +	WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE = 1, +	WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE = 2, +}; + +struct wlr_xdg_decoration_manager_v1 { +	struct wl_global *global; +	struct wl_list resources; +	struct wl_list decorations; // wlr_xdg_toplevel_decoration::link + +	struct wl_listener display_destroy; + +	struct { +		struct wl_signal new_toplevel_decoration; // struct wlr_xdg_toplevel_decoration * +	} events; + +	void *data; +}; + +struct wlr_xdg_toplevel_decoration_v1_configure { +	struct wl_list link; // wlr_xdg_toplevel_decoration::configure_list +	struct wlr_xdg_surface_configure *surface_configure; +	enum wlr_xdg_toplevel_decoration_v1_mode mode; +}; + +struct wlr_xdg_toplevel_decoration_v1 { +	struct wl_resource *resource; +	struct wlr_xdg_surface *surface; +	struct wlr_xdg_decoration_manager_v1 *manager; +	struct wl_list link; // wlr_xdg_decoration_manager_v1::link + +	bool added; +	enum wlr_xdg_toplevel_decoration_v1_mode current_mode; +	enum wlr_xdg_toplevel_decoration_v1_mode client_pending_mode; +	enum wlr_xdg_toplevel_decoration_v1_mode server_pending_mode; + +	struct wl_list configure_list; // wlr_xdg_toplevel_decoration_v1_configure::link + +	struct { +		struct wl_signal destroy; +		struct wl_signal request_mode; +	} events; + +	struct wl_listener surface_destroy; +	struct wl_listener surface_configure; +	struct wl_listener surface_ack_configure; +	struct wl_listener surface_commit; + +	void *data; +}; + +struct wlr_xdg_decoration_manager_v1 * +	wlr_xdg_decoration_manager_v1_create(struct wl_display *display); +void wlr_xdg_decoration_manager_v1_destroy( +	struct wlr_xdg_decoration_manager_v1 *manager); + +uint32_t wlr_xdg_toplevel_decoration_v1_set_mode( +	struct wlr_xdg_toplevel_decoration_v1 *decoration, +	enum wlr_xdg_toplevel_decoration_v1_mode mode); + +#endif diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h index 5aa6b374..06b59989 100644 --- a/include/wlr/types/wlr_xdg_shell.h +++ b/include/wlr/types/wlr_xdg_shell.h @@ -125,6 +125,7 @@ struct wlr_xdg_toplevel {  };  struct wlr_xdg_surface_configure { +	struct wlr_xdg_surface *surface;  	struct wl_list link; // wlr_xdg_surface::configure_list  	uint32_t serial; @@ -188,6 +189,10 @@ struct wlr_xdg_surface {  		 * surface has been hidden or is about to be destroyed.  		 */  		struct wl_signal unmap; + +		// for protocol extensions +		struct wl_signal configure; // wlr_xdg_surface_configure +		struct wl_signal ack_configure; // wlr_xdg_surface_configure  	} events;  	void *data; @@ -226,6 +231,8 @@ struct wlr_xdg_surface *wlr_xdg_surface_from_resource(  		struct wl_resource *resource);  struct wlr_xdg_surface *wlr_xdg_surface_from_popup_resource(  		struct wl_resource *resource); +struct wlr_xdg_surface *wlr_xdg_surface_from_toplevel_resource( +		struct wl_resource *resource);  struct wlr_box wlr_xdg_positioner_get_geometry(  		struct wlr_xdg_positioner *positioner); @@ -352,7 +359,8 @@ struct wlr_xdg_surface *wlr_xdg_surface_from_wlr_surface(   *   * The x and y value can be <0   */ -void wlr_xdg_surface_get_geometry(struct wlr_xdg_surface *surface, struct wlr_box *box); +void wlr_xdg_surface_get_geometry(struct wlr_xdg_surface *surface, +		struct wlr_box *box);  /**   * Call `iterator` on each surface and popup in the xdg-surface tree, with the @@ -360,7 +368,13 @@ void wlr_xdg_surface_get_geometry(struct wlr_xdg_surface *surface, struct wlr_bo   * from root to leaves (in rendering order).   */  void wlr_xdg_surface_for_each_surface(struct wlr_xdg_surface *surface, -	wlr_surface_iterator_func_t iterator, void *user_data); +		wlr_surface_iterator_func_t iterator, void *user_data); + +/** + * Schedule a surface configuration. This should only be called by protocols + * extending the shell. + */ +uint32_t wlr_xdg_surface_schedule_configure(struct wlr_xdg_surface *surface);  /**   * Call `iterator` on each popup in the xdg-surface tree, with the popup's | 
