@@ -76,7 +76,7 @@ public void RecordAction(UIElement element)
7676 _elementIdToEntry . Remove ( entry . Id ) ;
7777
7878 // Check if element is still valid (not already removed)
79- if ( entry . Element != null )
79+ if ( ! entry . IsRemoved )
8080 {
8181 _logger . LogInformation ( "Undo: Removing element ID={Id}, Type={Type}, RemainingActions={Count}" ,
8282 entry . Id , entry . Element . GetType ( ) . Name , _undoStack . Count ) ;
@@ -85,7 +85,7 @@ public void RecordAction(UIElement element)
8585 else
8686 {
8787 // Element was already removed (e.g., by eraser), skip to next
88- _logger . LogDebug ( "Undo: Skipping null element ID={Id} (already removed) " , entry . Id ) ;
88+ _logger . LogDebug ( "Undo: Skipping removed element ID={Id}" , entry . Id ) ;
8989 }
9090 }
9191
@@ -112,8 +112,8 @@ public void RemoveFromHistory(UIElement element)
112112 {
113113 if ( _elementIdToEntry . TryGetValue ( id , out var entry ) )
114114 {
115- // Mark the entry's element as null so it will be skipped during undo
116- entry . Element = null ;
115+ // Mark the entry as removed so it will be skipped during undo
116+ entry . IsRemoved = true ;
117117 _elementIdToEntry . Remove ( id ) ;
118118
119119 _logger . LogDebug ( "Element removed from history: ID={Id}, Type={Type}" ,
@@ -168,12 +168,14 @@ public void Clear()
168168 private class HistoryEntry
169169 {
170170 public Guid Id { get ; }
171- public UIElement ? Element { get ; set ; }
171+ public UIElement Element { get ; }
172+ public bool IsRemoved { get ; set ; }
172173
173174 public HistoryEntry ( Guid id , UIElement element )
174175 {
175176 Id = id ;
176177 Element = element ;
178+ IsRemoved = false ;
177179 }
178180 }
179181}
0 commit comments