fix panic when scrolling quickly

This commit is contained in:
Simon Gardling 2022-05-24 14:15:05 -04:00
parent ab8652ee3e
commit 873e5b1ebf

View File

@ -276,12 +276,19 @@ impl FunctionEntry {
let mut partial_regen = false; 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 { if width_changed {
self.invalidate_back(); self.invalidate_back();
self.invalidate_derivative(); 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; partial_regen = true;
let prev_min = unsafe { self.back_data.first().unwrap_unchecked() }.x; let prev_min = unsafe { self.back_data.first().unwrap_unchecked() }.x;
if prev_min < settings.min_x { if prev_min < settings.min_x {
@ -320,6 +327,7 @@ impl FunctionEntry {
debug_assert_eq!(data.len(), settings.plot_width + 1); debug_assert_eq!(data.len(), settings.plot_width + 1);
} }
} else { } 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 = ((settings.max_x - prev_min) as f64 / resolution) as usize;
let min_i_2 = settings.plot_width - min_i; let min_i_2 = settings.plot_width - min_i;