From e0ec6e5b11bc222c252157beb064104f4c60dfbe Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 2 Mar 2024 14:33:22 +0400 Subject: Make vertical touchpad swipe inertial Values and implementation are heavily inspired by AdwSwipeTracker. --- src/layout/mod.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/layout/mod.rs') diff --git a/src/layout/mod.rs b/src/layout/mod.rs index fb86ccac..6ec3ca8c 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -1603,14 +1603,18 @@ impl Layout { } } - pub fn workspace_switch_gesture_update(&mut self, delta_y: f64) -> Option> { + pub fn workspace_switch_gesture_update( + &mut self, + delta_y: f64, + timestamp: Duration, + ) -> Option> { let monitors = match &mut self.monitor_set { MonitorSet::Normal { monitors, .. } => monitors, MonitorSet::NoOutputs { .. } => return None, }; for monitor in monitors { - if let Some(refresh) = monitor.workspace_switch_gesture_update(delta_y) { + if let Some(refresh) = monitor.workspace_switch_gesture_update(delta_y, timestamp) { if refresh { return Some(Some(monitor.output.clone())); } else { @@ -2041,6 +2045,7 @@ mod tests { WorkspaceSwitchGestureUpdate { #[proptest(strategy = "-400f64..400f64")] delta: f64, + timestamp: Duration, }, WorkspaceSwitchGestureEnd { cancelled: bool, @@ -2303,8 +2308,8 @@ mod tests { layout.workspace_switch_gesture_begin(&output); } - Op::WorkspaceSwitchGestureUpdate { delta } => { - layout.workspace_switch_gesture_update(delta); + Op::WorkspaceSwitchGestureUpdate { delta, timestamp } => { + layout.workspace_switch_gesture_update(delta, timestamp); } Op::WorkspaceSwitchGestureEnd { cancelled } => { layout.workspace_switch_gesture_end(cancelled); -- cgit