mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-31 22:25:21 -04:00
xdg-shell: rework roles
This commit is contained in:
parent
e5300c225e
commit
bd5c4f4a4a
6 changed files with 174 additions and 140 deletions
|
|
@ -5,16 +5,13 @@
|
|||
#include <wlr/types/wlr_xdg_shell.h>
|
||||
#include "xdg-shell-protocol.h"
|
||||
|
||||
extern const struct wlr_surface_role xdg_toplevel_surface_role;
|
||||
extern const struct wlr_surface_role xdg_popup_surface_role;
|
||||
|
||||
void create_xdg_surface(struct wlr_xdg_client *client, struct wlr_surface *wlr_surface,
|
||||
uint32_t id);
|
||||
void destroy_xdg_surface(struct wlr_xdg_surface *surface);
|
||||
void destroy_xdg_surface_role_object(struct wlr_xdg_surface *surface);
|
||||
void xdg_surface_role_commit(struct wlr_surface *wlr_surface);
|
||||
void xdg_surface_role_unmap(struct wlr_surface *wlr_surface);
|
||||
void xdg_surface_role_destroy(struct wlr_surface *wlr_surface);
|
||||
|
||||
bool set_xdg_surface_role(struct wlr_xdg_surface *surface, enum wlr_xdg_surface_role role);
|
||||
void set_xdg_surface_role_object(struct wlr_xdg_surface *surface,
|
||||
struct wl_resource *role_resource);
|
||||
|
||||
void create_xdg_positioner(struct wlr_xdg_client *client, uint32_t id);
|
||||
|
||||
|
|
|
|||
|
|
@ -231,8 +231,18 @@ struct wlr_xdg_surface {
|
|||
struct wl_resource *resource;
|
||||
struct wlr_surface *surface;
|
||||
struct wl_list link; // wlr_xdg_client.surfaces
|
||||
enum wlr_xdg_surface_role role;
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue