Merge pull request #1053 from emersion/xdg-decoration

Add xdg-decoration-unstable-v1 support
This commit is contained in:
Drew DeVault 2018-08-02 09:33:10 -04:00 committed by GitHub
commit 5642c5cc8f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 807 additions and 43 deletions

View file

@ -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

View file

@ -133,6 +133,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;
@ -196,6 +197,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;
@ -234,6 +239,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);
@ -360,7 +367,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
@ -368,7 +376,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