internal void EndAtomicUndo () { if (atomicUndoLevel <= 0) throw new InvalidOperationException ("There is no atomic undo operation running."); atomicUndoLevel--; Debug.Assert (atomicUndoLevel >= 0); if (atomicUndoLevel == 0 && currentAtomicOperation != null) { if (currentAtomicOperation.Operations.Count > 1) { undoStack.Push (currentAtomicOperation); OnEndUndo (new UndoOperationEventArgs (currentAtomicOperation)); } else { if (currentAtomicOperation.Operations.Count > 0) { undoStack.Push (currentAtomicOperation.Operations [0]); OnEndUndo (new UndoOperationEventArgs (currentAtomicOperation.Operations [0])); } else { OnEndUndo (null); } } currentAtomicOperation = null; } currentAtomicUndoOperationType.Pop (); }
internal void BeginAtomicUndo (OperationType operationType = OperationType.Undefined) { currentAtomicUndoOperationType.Push (operationType); if (atomicUndoLevel == 0) { if (this.syntaxMode != null && !SuppressHighlightUpdate) Mono.TextEditor.Highlighting.SyntaxModeService.WaitUpdate (this); } if (currentAtomicOperation == null) { Debug.Assert (atomicUndoLevel == 0); currentAtomicOperation = new AtomicUndoOperation (operationType); OnBeginUndo (); } atomicUndoLevel++; }
public void MergeUndoOperations (int number) { number = System.Math.Min (number, undoStack.Count); var atomicUndo = new AtomicUndoOperation (); while (number-- > 0) { atomicUndo.Insert (0, undoStack.Pop ()); } undoStack.Push (atomicUndo); }
public void StackUndoToDepth (int depth) { if (undoStack.Count == depth) return; var atomicUndo = new AtomicUndoOperation (); while (undoStack.Count > depth) { atomicUndo.Operations.Insert (0, undoStack.Pop ()); } undoStack.Push (atomicUndo); }
public void BeginAtomicUndo () { if (atomicUndoLevel == 0) { if (this.syntaxMode != null && !SuppressHighlightUpdate) Mono.TextEditor.Highlighting.SyntaxModeService.WaitUpdate (this); } if (currentAtomicOperation == null) { Debug.Assert (atomicUndoLevel == 0); currentAtomicOperation = new AtomicUndoOperation (); OnBeginUndo (); } atomicUndoLevel++; }
internal void BeginAtomicUndo (OperationType operationType = OperationType.Undefined) { currentAtomicUndoOperationType.Push (operationType); if (currentAtomicOperation == null) { Debug.Assert (atomicUndoLevel == 0); currentAtomicOperation = new AtomicUndoOperation (operationType); OnBeginUndo (); } atomicUndoLevel++; }