25 lines
939 B
C
25 lines
939 B
C
void createdecoration(struct wl_listener *listener, void *data) {
|
|
struct wlr_xdg_toplevel_decoration_v1 *deco = data;
|
|
Client *c = deco->toplevel->base->data;
|
|
c->decoration = deco;
|
|
|
|
LISTEN(&deco->events.request_mode, &c->set_decoration_mode,
|
|
requestdecorationmode);
|
|
LISTEN(&deco->events.destroy, &c->destroy_decoration, destroydecoration);
|
|
|
|
requestdecorationmode(&c->set_decoration_mode, deco);
|
|
}
|
|
|
|
void destroydecoration(struct wl_listener *listener, void *data) {
|
|
Client *c = wl_container_of(listener, c, destroy_decoration);
|
|
|
|
wl_list_remove(&c->destroy_decoration.link);
|
|
wl_list_remove(&c->set_decoration_mode.link);
|
|
}
|
|
|
|
void requestdecorationmode(struct wl_listener *listener, void *data) {
|
|
Client *c = wl_container_of(listener, c, set_decoration_mode);
|
|
if (c->surface.xdg->initialized)
|
|
wlr_xdg_toplevel_decoration_v1_set_mode(
|
|
c->decoration, WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
|
|
}
|