aboutsummaryrefslogtreecommitdiff
path: root/src/layout/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-02 14:33:22 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-02 14:33:22 +0400
commite0ec6e5b11bc222c252157beb064104f4c60dfbe (patch)
tree04fd4807424fa75b1dd36e87f9e3bc5b94d91c05 /src/layout/mod.rs
parent93243d77728c3a0f7d314ed916b5f1a273861990 (diff)
downloadniri-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.rs13
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);