From b23dd4b800285f120ad556d77c2357b17c1ea6a2 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 3 Feb 2024 09:00:08 +0400 Subject: Respect natural-scroll for workspace switch gesture --- src/input.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/input.rs') diff --git a/src/input.rs b/src/input.rs index a357eac1..f06f6142 100644 --- a/src/input.rs +++ b/src/input.rs @@ -1156,11 +1156,20 @@ impl State { ); } - fn on_gesture_swipe_update(&mut self, event: I::GestureSwipeUpdateEvent) { - let res = self - .niri - .layout - .workspace_switch_gesture_update(event.delta_y()); + fn on_gesture_swipe_update(&mut self, event: I::GestureSwipeUpdateEvent) + where + I::Device: 'static, + { + let mut delta_y = event.delta_y(); + + let device = event.device(); + if let Some(device) = (&device as &dyn Any).downcast_ref::() { + if device.config_scroll_natural_scroll_enabled() { + delta_y = -delta_y; + } + } + + let res = self.niri.layout.workspace_switch_gesture_update(delta_y); if let Some(output) = res { if let Some(output) = output { self.niri.queue_redraw(output); -- cgit