/// <summary> /// Undoes the last command /// </summary> public void Undo() { RunCommandTillEndWith(() => { CurrentTransaction = this.UndoStack.Pop(); if (this.CurrentTransaction.ExecutionConfiguration != null && this.CurrentTransaction.ExecutionConfiguration.RunInBackground) { UnExecuteInSpawnedThread(CurrentTransaction); } else { CurrentTransaction.UnExecute(); } RedoStack.Push(CurrentTransaction); if (autocommit) { this.CommitTransaction(); } RaiseCanUndoRedoChanged(this, EventArgs.Empty); }); }
/// <summary> /// Performs a rollback of the topmost transaction from the stack /// </summary> public void RollBackTransaction() { this.unboundedTransactionRunning = false; if (this.CurrentTransaction != null) { if (this.UndoStack.Count > 0) { this.UndoStack.Pop(); } else { // this should not happen! } CurrentTransaction.UnExecute(); } }