aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/wm/xdg.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/wm/xdg.c')
-rw-r--r--sys/cmd/wm/xdg.c29
1 files changed, 21 insertions, 8 deletions
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;
@@ -30,6 +30,15 @@ unmap(struct wl_listener *l, void *data)
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)
{
Client *client = wl_container_of(l, client, event.destroy);
@@ -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);