From 92d1549d7eadcddf65b586e540e8323d38fdbec1 Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Tue, 25 Apr 2023 17:43:34 +0200
Subject: [PATCH] geometry: Fix profile add, undo.

---
 src/Model/Geometry/Reach.py           | 4 +++-
 src/View/Geometry/ReachUndoCommand.py | 8 ++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py
index 26bb2468..afd6b23b 100644
--- a/src/Model/Geometry/Reach.py
+++ b/src/Model/Geometry/Reach.py
@@ -79,13 +79,15 @@ class Reach:
             index: The position of the new profile.
 
         Returns:
-            Nothing.
+            The new profile.
         """
         profile = ProfileXYZ(reach=self)
 
         self._profiles.insert(index, profile)
         self._update_profile_numbers()
 
+        return profile
+
     def insert_profile(self, index: int, profile: Profile):
         """Insert new profile in list
 
diff --git a/src/View/Geometry/ReachUndoCommand.py b/src/View/Geometry/ReachUndoCommand.py
index 62e99203..2171e0bc 100644
--- a/src/View/Geometry/ReachUndoCommand.py
+++ b/src/View/Geometry/ReachUndoCommand.py
@@ -40,12 +40,16 @@ class AddCommand(QUndoCommand):
 
         self._reach = reach
         self._index = index
+        self._profile = None
 
     def undo(self):
-        self._reach.delete(self._index)
+        self._reach.delete_profiles([self._profile])
 
     def redo(self):
-        self._reach.insert(self._index)
+        if self._profile is None:
+            self._profile = self._reach.insert(self._index)
+        else:
+            self._reach.insert_profile(self._index, self._profile)
 
 class DelCommand(QUndoCommand):
     def __init__(self, reach, rows):
-- 
GitLab