On Wayland, send DeviceEvent::Motion

This commit is contained in:
Andriy 2024-02-20 10:34:05 +01:00 committed by GitHub
parent c4310af83c
commit 19190a95a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 13 deletions

View file

@ -11,6 +11,7 @@ Unreleased` header.
# Unreleased # Unreleased
- On Wayland, fix DeviceEvent::Motion not being sent
- On X11, don't require XIM to run. - On X11, don't require XIM to run.
- On X11, fix xkb state not being updated correctly sometimes leading to wrong input. - On X11, fix xkb state not being updated correctly sometimes leading to wrong input.
- Fix compatibility with 32-bit platforms without 64-bit atomics. - Fix compatibility with 32-bit platforms without 64-bit atomics.

View file

@ -60,19 +60,34 @@ impl Dispatch<ZwpRelativePointerV1, GlobalData, WinitState> for RelativePointerS
_conn: &Connection, _conn: &Connection,
_qhandle: &QueueHandle<WinitState>, _qhandle: &QueueHandle<WinitState>,
) { ) {
if let zwp_relative_pointer_v1::Event::RelativeMotion { let (dx_unaccel, dy_unaccel) = match event {
dx_unaccel, zwp_relative_pointer_v1::Event::RelativeMotion {
dy_unaccel, dx_unaccel,
.. dy_unaccel,
} = event ..
{ } => (dx_unaccel, dy_unaccel),
state.events_sink.push_device_event( _ => return,
DeviceEvent::MouseMotion { };
delta: (dx_unaccel, dy_unaccel), state.events_sink.push_device_event(
}, DeviceEvent::Motion {
super::DeviceId, axis: 0,
); value: dx_unaccel,
} },
super::DeviceId,
);
state.events_sink.push_device_event(
DeviceEvent::Motion {
axis: 1,
value: dy_unaccel,
},
super::DeviceId,
);
state.events_sink.push_device_event(
DeviceEvent::MouseMotion {
delta: (dx_unaccel, dy_unaccel),
},
super::DeviceId,
);
} }
} }