diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index 6f93261a9460692d98617569e7077bdc852b64c7..34b989c795017af302c9eb76b8ef7af87fd680cc 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -240,7 +240,6 @@ impl PidPane { } ui.close_menu(); } - if ui.button("Rotate 90° ⟲").clicked() { if let Some(elem) = self.find_hovered_element_mut(&pointer_pos) { elem.rotation += PI / 2.0; @@ -257,6 +256,14 @@ impl PidPane { } ui.close_menu(); } + if ui.button("Delete").clicked() { + if let Some(idx) = self.find_hovered_element_idx(&pointer_pos) { + self.delete_element(idx); + } else { + panic!("No element found where the \"Delete\" action was issued"); + } + ui.close_menu(); + } } else { ui.menu_button("Symbols", |ui| { for symbol in Symbol::iter() { @@ -268,4 +275,13 @@ impl PidPane { }); } } + + fn delete_element(&mut self, idx: usize) { + // First delete connection referencing this element + self.connections + .retain(|elem| elem.start != idx && elem.end != idx); + + // Then the element + self.elements.remove(idx); + } }