Skip to content

Commit

Permalink
fix virtual pointers
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
guidocella committed Mar 11, 2024
1 parent ea33ce9 commit 2b171fd
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions dwl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 2b171fd

Please sign in to comment.