aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/wm/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/wm/input.c')
-rw-r--r--sys/cmd/wm/input.c39
1 files changed, 28 insertions, 11 deletions
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