From 664441f688b72aa8091d4476a291db48fd0225b1 Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Wed, 15 Jan 2025 21:28:58 +0100
Subject: [PATCH] Fixed elements placing position

---
 src/ui/panes/pid_drawing_tool.rs          | 6 ++++--
 src/ui/panes/pid_drawing_tool/elements.rs | 6 +++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index 68a47de..4fcbcf9 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -242,8 +242,10 @@ impl PidPane {
             ui.menu_button("Symbols", |ui| {
                 for symbol in Symbol::iter() {
                     if ui.button(symbol.to_string()).clicked() {
-                        self.elements
-                            .push(Element::new(self.grid.screen_to_grid(pointer_pos), symbol));
+                        self.elements.push(Element::new(
+                            self.grid.screen_to_grid(pointer_pos).round(),
+                            symbol,
+                        ));
                         self.action.take();
                         ui.close_menu();
                     }
diff --git a/src/ui/panes/pid_drawing_tool/elements.rs b/src/ui/panes/pid_drawing_tool/elements.rs
index 179f523..e3748a1 100644
--- a/src/ui/panes/pid_drawing_tool/elements.rs
+++ b/src/ui/panes/pid_drawing_tool/elements.rs
@@ -25,9 +25,9 @@ pub struct Element {
 }
 
 impl Element {
-    pub fn new(position: Vec2, symbol: Symbol) -> Self {
+    pub fn new(center: Vec2, symbol: Symbol) -> Self {
         Self {
-            position,
+            position: center - symbol.size() / 2.0,
             rotation: 0.0,
             anchor_points: symbol.anchor_points(),
             symbol,
@@ -54,7 +54,7 @@ impl Element {
         let rotm_e_to_g = Mat2::from_angle(self.rotation);
 
         // Center in grid's frame
-        let center_g = rotm_e_to_g * self.symbol.size() / 2.0;
+        let center_g = rotm_e_to_g * self.size() / 2.0;
 
         self.position = p_g - center_g;
     }
-- 
GitLab