public void AddOperation(IUndoRedoOperation operation) { if (operation == null) { return; } undoStack.Push(operation); redoStack.Clear(); }
public void AddOperation(IUndoRedoOperation operation) { if (operation == null) { return; } undoStack.Push(operation); redoStack.Clear(); AddUndoOperationEvent?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Call this method to redo the last undone operation /// </summary> public void Redo() { AssertNoUndoGroupOpen(); if (redostack.Count > 0) { IUndoRedoOperation uedit = (IUndoRedoOperation)redostack.Pop(); undostack.Push(uedit); uedit.Redo(); OnActionRedone(); } }
private void AddOperationToUndoStack(IUndoRedoOperation operation) { if (ActiveTransactionIdCount >= Constants.UndoRedoTransactionCapacity) { var transactionIdToRemove = UndoStack.First?.Value.TransactionId; while (UndoStack.First?.Value.TransactionId == transactionIdToRemove) { UndoStack.RemoveFirst(); } --ActiveTransactionIdCount; } UndoStack.AddLast(operation); }
/// <summary> /// Call this method to push an UndoableOperation on the undostack, the redostack /// will be cleared, if you use this method. /// </summary> public void Push(IUndoRedoOperation operation) { if (operation == null) { throw new ArgumentNullException("operation"); } if (AcceptChanges) { StartUndoGroup(); undostack.Push(operation); actionCountInUndoGroup++; if (TextEditorControl != null) { undostack.Push(new UndoRedoSetCaretPosition(this, TextEditorControl.Caret.Position)); actionCountInUndoGroup++; } EndUndoGroup(); ClearRedoStack(); } }
public OperationEventArgs(IUndoRedoOperation op) { this.op = op; }
public void AddOperationToRedoneOperations(IUndoRedoOperation undoRedoOperation) { RedoneOperations.Add(undoRedoOperation); OnPropertyChanged(nameof(CanRedo)); }