From d69354eedb0b25767293b7aac9ab32def01005f3 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Mon, 4 Oct 2021 07:18:56 -0700 Subject: checkin(wm) --- sys/cmd/wm/input.c | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'sys/cmd/wm/input.c') diff --git a/sys/cmd/wm/input.c b/sys/cmd/wm/input.c index 7913a9f..b4ceba5 100644 --- a/sys/cmd/wm/input.c +++ b/sys/cmd/wm/input.c @@ -149,8 +149,8 @@ cursorresize(uint32 time) } wlr_xdg_surface_get_geometry(client->xdg, &box); - client->geo.x = new_left - box.x; - client->geo.y = new_top - box.y; + client->geometry.x = new_left - box.x; + client->geometry.y = new_top - box.y; new_width = new_right - new_left; new_height = new_bottom - new_top; @@ -159,17 +159,34 @@ cursorresize(uint32 time) static void -docursor(uint32 time) +move(uint32 time) { double sx, sy; - Client *client; + Client *client; struct wlr_seat *seat; struct wlr_surface *surface; - if(server.cursor.mode == CursorMove) - return cursormove(time); - else if(server.cursor.mode == CursorResize) - return cursorresize(time); + if(server.cursor.mode == CursorMove) { + resize(server.grab.client, + server.cursor.dot->x - server.grab.x, + server.cursor.dot->y - server.grab.y, + server.grab.client->geometry.width, + server.grab.client->geometry.height, + 1 + ); + return; + } + + if(server.cursor.mode == CursorResize) { + resize(server.grab.client, + server.cursor.dot->x, + server.cursor.dot->y, + server.grab.client->geometry.width, + server.grab.client->geometry.height, + 1 + ); + return; + } /* Otherwise, find the client under the pointer and send the event along. */ seat = server.input.seat; @@ -191,7 +208,7 @@ cursor_move(struct wl_listener *l, void *data) { struct wlr_event_pointer_motion *event = data; wlr_cursor_move(server.cursor.dot, event->device, event->delta_x, event->delta_y); - docursor(event->time_msec); + move(event->time_msec); } void @@ -199,7 +216,7 @@ cursor_move_abs(struct wl_listener *l, void *data) { struct wlr_event_pointer_motion_absolute *event = data; wlr_cursor_warp_absolute(server.cursor.dot, event->device, event->x, event->y); - docursor(event->time_msec); + move(event->time_msec); } void @@ -217,7 +234,7 @@ cursor_button(struct wl_listener *l, void *data) if (event->state == WLR_BUTTON_RELEASED) server.cursor.mode = CursorPassthrough; else - focus(client, surface); + focus(client, surface, 1); } void -- cgit v1.2.1