From e00d1bc13c46af9eeeef4c8de3001e308237454e Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Tue, 14 Jan 2025 13:41:52 +0100
Subject: [PATCH] Fixed grid dots drag

---
 src/ui/panes/pid_drawing_tool.rs | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index 160b421..a512ce4 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -231,14 +231,21 @@ impl PidPane {
         let window_rect = ui.max_rect();
         let dot_color = PidPane::dots_color(theme);
 
-        let start_x =
-            (window_rect.min.x / self.grid.get_size()) as i32 * self.grid.get_size() as i32;
-        let end_x =
-            (window_rect.max.x / self.grid.get_size() + 1.0) as i32 * self.grid.get_size() as i32;
-        let start_y =
-            (window_rect.min.y / self.grid.get_size()) as i32 * self.grid.get_size() as i32;
-        let end_y =
-            (window_rect.max.y / self.grid.get_size() + 1.0) as i32 * self.grid.get_size() as i32;
+        let offset_x = (self.grid.zero_pos.x % self.grid.get_size()) as i32;
+        let offset_y = (self.grid.zero_pos.y % self.grid.get_size()) as i32;
+
+        let start_x = (window_rect.min.x / self.grid.get_size()) as i32
+            * self.grid.get_size() as i32
+            + offset_x;
+        let end_x = (window_rect.max.x / self.grid.get_size() + 2.0) as i32
+            * self.grid.get_size() as i32
+            + offset_x;
+        let start_y = (window_rect.min.y / self.grid.get_size()) as i32
+            * self.grid.get_size() as i32
+            + offset_y;
+        let end_y = (window_rect.max.y / self.grid.get_size() + 2.0) as i32
+            * self.grid.get_size() as i32
+            + offset_y;
 
         for x in (start_x..end_x).step_by(self.grid.get_size() as usize) {
             for y in (start_y..end_y).step_by(self.grid.get_size() as usize) {
-- 
GitLab