diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-02 14:33:22 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-02 14:33:22 +0400 |
| commit | e0ec6e5b11bc222c252157beb064104f4c60dfbe (patch) | |
| tree | 04fd4807424fa75b1dd36e87f9e3bc5b94d91c05 /src/layout/mod.rs | |
| parent | 93243d77728c3a0f7d314ed916b5f1a273861990 (diff) | |
| download | niri-e0ec6e5b11bc222c252157beb064104f4c60dfbe.tar.gz niri-e0ec6e5b11bc222c252157beb064104f4c60dfbe.tar.bz2 niri-e0ec6e5b11bc222c252157beb064104f4c60dfbe.zip | |
Make vertical touchpad swipe inertial
Values and implementation are heavily inspired by AdwSwipeTracker.
Diffstat (limited to 'src/layout/mod.rs')
| -rw-r--r-- | src/layout/mod.rs | 13 |
1 files changed, 9 insertions, 4 deletions
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<W: LayoutElement> Layout<W> { } } - pub fn workspace_switch_gesture_update(&mut self, delta_y: f64) -> Option<Option<Output>> { + pub fn workspace_switch_gesture_update( + &mut self, + delta_y: f64, + timestamp: Duration, + ) -> Option<Option<Output>> { 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); |
