Exemple #1
0
        public void DoRedo()
        {
            if (queuePosition == queueHead)
            {
                return;
            }

            TransactionInProgress = true;
            transactionQueue[queuePosition].Apply();
            if (undoEvent != null)
            {
                UndoEventArgs args = new UndoEventArgs(transactionQueue[queuePosition], true);
                undoEvent(this, args);
            }
            TransactionInProgress = false;
            queuePosition++;
            if (queuePosition >= NumTransactions)
            {
                queuePosition -= NumTransactions;
            }
        }
Exemple #2
0
        public void DoUndo()
        {
            if (queuePosition == queueTail)
            {
                return;
            }
            int undoPosition = queuePosition - 1;

            if (undoPosition < 0)
            {
                undoPosition += NumTransactions;
            }
            TransactionInProgress = true;
            transactionQueue[undoPosition].Revert();
            if (undoEvent != null)
            {
                UndoEventArgs args = new UndoEventArgs(transactionQueue[undoPosition], false);
                undoEvent(this, args);
            }
            TransactionInProgress = false;
            queuePosition         = undoPosition;
        }