From 873e5b1ebf01c1249b750af687376da04ee9e7f1 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Tue, 24 May 2022 14:15:05 -0400 Subject: [PATCH] fix panic when scrolling quickly --- src/function_entry.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/function_entry.rs b/src/function_entry.rs index 0fd7284..6f66ebc 100644 --- a/src/function_entry.rs +++ b/src/function_entry.rs @@ -276,12 +276,19 @@ impl FunctionEntry { let mut partial_regen = false; + let overlaps = if self.back_data.is_empty() { + false + } else { + let prev_min = unsafe { self.back_data.first().unwrap_unchecked() }.x; + let prev_max = unsafe { self.back_data.first().unwrap_unchecked() }.x; + (settings.min_x <= prev_max) && (settings.max_x >= prev_min) + }; + if width_changed { self.invalidate_back(); self.invalidate_derivative(); - } else if min_max_changed && !self.back_data.is_empty() && !did_zoom { + } else if min_max_changed && !self.back_data.is_empty() && !did_zoom && overlaps { partial_regen = true; - let prev_min = unsafe { self.back_data.first().unwrap_unchecked() }.x; if prev_min < settings.min_x { @@ -320,6 +327,7 @@ impl FunctionEntry { debug_assert_eq!(data.len(), settings.plot_width + 1); } } else { + // TODO: fix weird values on the far right when scrolling fast left-ward let min_i = ((settings.max_x - prev_min) as f64 / resolution) as usize; let min_i_2 = settings.plot_width - min_i;