diff --git a/src/Model/BoundaryCondition/BoundaryConditionList.py b/src/Model/BoundaryCondition/BoundaryConditionList.py index 051a3ea8..b2c7b8bc 100644 --- a/src/Model/BoundaryCondition/BoundaryConditionList.py +++ b/src/Model/BoundaryCondition/BoundaryConditionList.py @@ -89,3 +89,11 @@ class BoundaryConditionList(PamhyrModelListWithTab): def copy(self): return copy(self) + + def get_assoc_to_node(self, tab, node): + return next( + filter( + lambda i: i.node is node, + self._tabs[tab] + ) + ) diff --git a/src/View/BoundaryCondition/UndoCommand.py b/src/View/BoundaryCondition/UndoCommand.py index 64bfebbe..fd2923d3 100644 --- a/src/View/BoundaryCondition/UndoCommand.py +++ b/src/View/BoundaryCondition/UndoCommand.py @@ -53,12 +53,19 @@ class SetNodeCommand(QUndoCommand): self._index = index self._old = self._bcs.get(self._tab, self._index).node self._new = node + self._prev_assoc_to_node = self._bcs.get_assoc_to_node(tab, node) + + def _previous_assoc_node(self, node): + if self._prev_assoc_to_node is not None: + self._prev_assoc_to_node.node = node def undo(self): self._bcs.get(self._tab, self._index).node = self._old + self._previous_assoc_node(self._new) def redo(self): self._bcs.get(self._tab, self._index).node = self._new + self._previous_assoc_node(None) class SetTypeCommand(QUndoCommand):