diff --git a/river/Cursor.zig b/river/Cursor.zig index 7e8d427..0cc2b9a 100644 --- a/river/Cursor.zig +++ b/river/Cursor.zig @@ -471,10 +471,12 @@ fn processMotion(self: *Self, device: *wlr.InputDevice, time: u32, delta_x: f64, }, .down => |view| { self.wlr_cursor.move(device, delta_x, delta_y); + // This takes surface-local coordinates + const output_box = view.output.root.output_layout.getBox(view.output.wlr_output).?; self.seat.wlr_seat.pointerNotifyMotion( time, - self.wlr_cursor.x - @intToFloat(f64, view.current.box.x - view.surface_box.x), - self.wlr_cursor.y - @intToFloat(f64, view.current.box.y - view.surface_box.y), + self.wlr_cursor.x - @intToFloat(f64, output_box.x + view.current.box.x - view.surface_box.x), + self.wlr_cursor.y - @intToFloat(f64, output_box.y + view.current.box.y - view.surface_box.y), ); }, .move => |view| {