internal int LockTransaction(PpsUndoTransaction locked) { CheckBlockingTransaction(); blockingTransaction = locked; return(GetRollbackIndex()); } // proc LockTransaction
/// <summary>Creates a new undo/redo transaction.</summary> /// <param name="description">Description of the transaction.</param> /// <returns>Returns the transaction scope.</returns> public IPpsUndoTransaction BeginTransaction(string description) { currentUndoTransaction = currentUndoTransaction == null ? new PpsUndoRootTransaction(this, description) : currentUndoTransaction = new PpsUndoParentTransaction(currentUndoTransaction, description); return(currentUndoTransaction); } // func BeginTransaction
} // proc LockTransaction internal void UnlockTransaction(bool commit, int rollbackIndex) { if (blockingTransaction == null) { throw new InvalidOperationException(String.Format("No blocking transaction.")); } // is a rollback needed if (!commit) { RollbackToIndex(rollbackIndex); } // Close the current transaction blockingTransaction.CloseTransaction(commit); blockingTransaction = null; UpdateCurrentTransaction(this); } // proc UnlockTransaction
internal override void UpdateCurrentTransaction(PpsUndoTransaction trans) => parent.UpdateCurrentTransaction(trans);
public PpsUndoParentTransaction(PpsUndoTransaction parent, string sDescription) : base(sDescription) { this.parent = parent; this.rollbackIndex = parent.LockTransaction(this); } // ctor
} // proc RollbackToIndex internal override void UpdateCurrentTransaction(PpsUndoTransaction trans) => manager.currentUndoTransaction = trans;
internal abstract void UpdateCurrentTransaction(PpsUndoTransaction trans);