diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index 204b86aed73673678b68daa8ef7961125a1a8032..beaa1859071f6039a9819ccea6f813e7817c43fe 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -348,31 +348,33 @@ impl PidPane { .chain(self.connections.iter().flat_map(|conn| conn.points())) .collect(); - let min_x = points - .iter() - .map(|p| p.x) - .min_by(|a, b| a.total_cmp(b)) - .log_unwrap(); - let min_y = points - .iter() - .map(|p| p.y) - .min_by(|a, b| a.total_cmp(b)) - .log_unwrap(); - let min = Vec2::new(min_x, min_y); - - let max_x = points - .iter() - .map(|p| p.x) - .max_by(|a, b| a.total_cmp(b)) - .log_unwrap(); - let max_y = points - .iter() - .map(|p| p.y) - .max_by(|a, b| a.total_cmp(b)) - .log_unwrap(); - let max = Vec2::new(max_x, max_y); - - self.grid.zero_pos = ui_center - min.midpoint(max) * self.grid.size(); + if !points.is_empty() { + let min_x = points + .iter() + .map(|p| p.x) + .min_by(|a, b| a.total_cmp(b)) + .log_unwrap(); + let min_y = points + .iter() + .map(|p| p.y) + .min_by(|a, b| a.total_cmp(b)) + .log_unwrap(); + let min = Vec2::new(min_x, min_y); + + let max_x = points + .iter() + .map(|p| p.x) + .max_by(|a, b| a.total_cmp(b)) + .log_unwrap(); + let max_y = points + .iter() + .map(|p| p.y) + .max_by(|a, b| a.total_cmp(b)) + .log_unwrap(); + let max = Vec2::new(max_x, max_y); + + self.grid.zero_pos = ui_center - min.midpoint(max) * self.grid.size(); + } } fn handle_zoom(&mut self, ui: &Ui, theme: Theme, pointer_pos: Vec2) {