diff --git a/src/ifs/wl_seat/event_handling.rs b/src/ifs/wl_seat/event_handling.rs index 8b46b083..ddec3ad8 100644 --- a/src/ifs/wl_seat/event_handling.rs +++ b/src/ifs/wl_seat/event_handling.rs @@ -1476,8 +1476,11 @@ impl WlSeatGlobal { } p.send_axis(time, axis, delta); } - if p.seat.version >= AXIS_STOP_SINCE_VERSION && event.stop[i].get() { - p.send_axis_stop(time, axis); + if event.stop[i].get() { + if p.seat.version >= AXIS_STOP_SINCE_VERSION { + p.send_axis_stop(time, axis); + } + p.v120_accumulator[i].set(0); } } if p.seat.version >= POINTER_FRAME_SINCE_VERSION { diff --git a/src/ifs/wl_seat/wl_pointer.rs b/src/ifs/wl_seat/wl_pointer.rs index affb2ac0..3325b1fe 100644 --- a/src/ifs/wl_seat/wl_pointer.rs +++ b/src/ifs/wl_seat/wl_pointer.rs @@ -90,6 +90,9 @@ impl WlPointer { pub fn send_enter(&self, serial: u64, surface: WlSurfaceId, mut x: Fixed, mut y: Fixed) { self.last_motion.set((x, y)); + for accumulator in &self.v120_accumulator { + accumulator.set(0); + } logical_to_client_wire_scale!(self.seat.client, x, y); self.seat.client.event(Enter { self_id: self.id,