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.
This commit is contained in:
		
							
								
								
									
										3
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user