summaryrefslogtreecommitdiff
path: root/dwl.c
diff options
context:
space:
mode:
authorGuido Cella <guido@guidocella.xyz>2024-03-11 19:01:13 +0100
committerGuido Cella <guido@guidocella.xyz>2024-03-11 19:01:13 +0100
commit2b171fd5010379a8674afa012245fea5a590e472 (patch)
tree409833f22bcf92002764e385c380a0852969f242 /dwl.c
parentea33ce9ae68e41a22a2fca3b6d17e071b9325a69 (diff)
fix virtual pointers
When motionabsolute() is called from warpd, event->time_msec is 0, so motionnotify() doesn't call wlr_cursor_move(). Fix this by explicitly warping the cursor in this case, like it was done before implementing pointer constraints. I don't know if this is a bug in warpd or time_msec is always 0 with virtual pointers, since the only other software that uses the virtual pointer protocol I know of is wl-kbptr, and I can't get that to work with dwl at all.
Diffstat (limited to 'dwl.c')
-rw-r--r--dwl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/dwl.c b/dwl.c
index d508d79..5867b0c 100644
--- a/dwl.c
+++ b/dwl.c
@@ -1675,6 +1675,9 @@ motionabsolute(struct wl_listener *listener, void *data)
struct wlr_pointer_motion_absolute_event *event = data;
double lx, ly, dx, dy;
+ if (!event->time_msec) /* this is 0 with virtual pointers */
+ wlr_cursor_warp_absolute(cursor, &event->pointer->base, event->x, event->y);
+
wlr_cursor_absolute_to_layout_coords(cursor, &event->pointer->base, event->x, event->y, &lx, &ly);
dx = lx - cursor->x;
dy = ly - cursor->y;