|
|
|
@ -22,6 +22,10 @@ namespace Avalonia.Controls.Utils |
|
|
|
|
|
|
|
private LinkedListNode<TState> _currentNode; |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Maximum number of states this helper can store for undo/redo.
|
|
|
|
/// If -1, no limit is imposed.
|
|
|
|
/// </summary>
|
|
|
|
public int Limit { get; set; } = 10; |
|
|
|
|
|
|
|
public UndoRedoHelper(IUndoRedoHost host) |
|
|
|
@ -54,7 +58,10 @@ namespace Avalonia.Controls.Utils |
|
|
|
public bool HasState => _currentNode != null; |
|
|
|
public void UpdateLastState(TState state) |
|
|
|
{ |
|
|
|
_states.Last.Value = state; |
|
|
|
if (_states.Last != null) |
|
|
|
{ |
|
|
|
_states.Last.Value = state; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void UpdateLastState() |
|
|
|
@ -86,7 +93,7 @@ namespace Avalonia.Controls.Utils |
|
|
|
DiscardRedo(); |
|
|
|
_states.AddLast(current); |
|
|
|
_currentNode = _states.Last; |
|
|
|
if (_states.Count > Limit) |
|
|
|
if (Limit != -1 && _states.Count > Limit) |
|
|
|
_states.RemoveFirst(); |
|
|
|
} |
|
|
|
} |
|
|
|
|