From 22bfec7259282c4e7f629b502e171dbf7580b5a1 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 9 Jul 2024 09:38:56 +0400 Subject: Add tolerance to view offset anim restart check It was getting tripped by tiny differences. --- src/layout/workspace.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs index 625f4d5c..4b873fff 100644 --- a/src/layout/workspace.rs +++ b/src/layout/workspace.rs @@ -771,16 +771,22 @@ impl Workspace { let from_view_offset = current_x - new_col_x; self.view_offset = from_view_offset; + let pixel = 1. / self.scale.fractional_scale(); + // If we're already animating towards that, don't restart it. - if let Some(ViewOffsetAdjustment::Animation(anim)) = &self.view_offset_adj { - let pixel = 1. / self.scale.fractional_scale(); - if (anim.value() - self.view_offset).abs() < pixel && anim.to() == new_view_offset { + if let Some(ViewOffsetAdjustment::Animation(anim)) = &mut self.view_offset_adj { + let to_diff = new_view_offset - anim.to(); + if (anim.value() - self.view_offset).abs() < pixel && to_diff.abs() < pixel { + // Correct for any inaccuracy. + anim.offset(to_diff); return; } } // If our view offset is already this, we don't need to do anything. - if self.view_offset == new_view_offset { + if (self.view_offset - new_view_offset).abs() < pixel { + // Correct for any inaccuracy. + self.view_offset = new_view_offset; self.view_offset_adj = None; return; } -- cgit