From 8548eee386d95af583227cf8051b9c37becb2a74 Mon Sep 17 00:00:00 2001 From: Alberto Nidasio <alberto.nidasio@skywarder.eu> Date: Wed, 15 Jan 2025 19:44:37 +0100 Subject: [PATCH] Fixed connections between elements --- src/ui/panes/pid_drawing_tool.rs | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index 6f7db25..68a47de 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -190,7 +190,8 @@ impl PidPane { if !self.editable { if ui.button("Enable editing").clicked() { self.editable = true; - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } ui.checkbox(&mut self.center_content, "Center"); return; @@ -200,36 +201,42 @@ impl PidPane { if let Some(elem_idx) = elem_idx { if ui.button("Connect").clicked() { self.action = Some(Action::Connect(elem_idx)); - self.close_context_menu(ui); + ui.close_menu(); } if ui.button("Rotate 90° ⟲").clicked() { self.elements[elem_idx].rotate(-PI / 2.0); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } if ui.button("Rotate 90° ⟳").clicked() { self.elements[elem_idx].rotate(PI / 2.0); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } if ui.button("Delete").clicked() { self.delete_element(elem_idx); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } } else if let Some((conn_idx, segm_idx)) = self.hovers_connection(pointer_pos) { if ui.button("Split").clicked() { self.connections[conn_idx].split(segm_idx, self.grid.screen_to_grid(pointer_pos)); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } if ui.button("Change start anchor").clicked() { let conn = &mut self.connections[conn_idx]; conn.start_anchor = (conn.start_anchor + 1) % self.elements[conn.start].anchor_points_len(); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } if ui.button("Change end anchor").clicked() { let conn = &mut self.connections[conn_idx]; conn.end_anchor = (conn.end_anchor + 1) % self.elements[conn.end].anchor_points_len(); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } } else { ui.menu_button("Symbols", |ui| { @@ -237,7 +244,8 @@ impl PidPane { if ui.button(symbol.to_string()).clicked() { self.elements .push(Element::new(self.grid.screen_to_grid(pointer_pos), symbol)); - self.close_context_menu(ui); + self.action.take(); + ui.close_menu(); } } }); @@ -249,11 +257,6 @@ impl PidPane { } } - fn close_context_menu(&mut self, ui: &mut Ui) { - ui.close_menu(); - self.action.take(); - } - /// Removes an element from the diagram fn delete_element(&mut self, elem_idx: usize) { // First delete connection referencing this element -- GitLab