From 7e7fab861a7e5baae9182419f7f320af36ce1ec4 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Wed, 29 Sep 2021 12:59:39 -0700 Subject: Feat(wm): prepararation for layout mechanism --- sys/cmd/wm/xdg.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'sys/cmd/wm/xdg.c') diff --git a/sys/cmd/wm/xdg.c b/sys/cmd/wm/xdg.c index 0ff7c0a..07ddf53 100644 --- a/sys/cmd/wm/xdg.c +++ b/sys/cmd/wm/xdg.c @@ -7,8 +7,8 @@ map(struct wl_listener *l, void *data) Client *client = wl_container_of(l, client, event.map); client->ismapped = true; - wl_list_insert(&server.clients, &client->link); - wl_list_insert(&server.stack, &client->stack); + wl_list_insert(&server.client.list, &client->link); + wl_list_insert(&server.client.stack, &client->stack); wlr_xdg_surface_get_geometry(client->xdg, &client->geo); client->geo.width += 2 * client->border; @@ -28,6 +28,15 @@ unmap(struct wl_listener *l, void *data) wl_list_remove(&client->stack); } +static +void +commit(struct wl_listener *l, void *data) +{ + Client *client = wl_container_of(l, client, event.commit); + if(client->resize && client->resize <= client->xdg->configure_serial) + client->resize = 0; +} + static void destroy(struct wl_listener *l, void *data) @@ -46,18 +55,19 @@ request_move(struct wl_listener *l, void *data) static void -request_title(struct wl_listener *l, void *data) +request_resize(struct wl_listener *l, void *data) { - Client *client = wl_container_of(l, client, event.request_title); + struct wlr_xdg_toplevel_resize_event *event = data; + Client *client = wl_container_of(l, client, event.request_resize); + setinteractive(client, CursorResize, event->edges); } + static void -request_resize(struct wl_listener *l, void *data) +request_title(struct wl_listener *l, void *data) { - struct wlr_xdg_toplevel_resize_event *event = data; - Client *client = wl_container_of(l, client, event.request_resize); - setinteractive(client, CursorResize, event->edges); + Client *client = wl_container_of(l, client, event.request_title); } static @@ -89,6 +99,9 @@ make_xdg_surface(struct wl_listener *l, void *data) client->event.destroy.notify = destroy; wl_signal_add(&xdg->events.destroy, &client->event.destroy); + client->event.commit.notify = commit; + wl_signal_add(&xdg->surface->events.commit, &client->event.commit); + toplevel = xdg->toplevel; client->event.request_move.notify = request_move; wl_signal_add(&toplevel->events.request_move, &client->event.request_move); -- cgit v1.2.1