public void Redo() { if (undoListCount == changeList.Count) { return; } UndoRedoChange change = (UndoRedoChange)changeList [undoListCount++]; if (change.CheckValid()) { UndoRedoChange res = change.ApplyChange(); if (res != null) { changeList [undoListCount - 1] = res; } else { // Redo failed undoListCount--; changeList.RemoveAt(undoListCount); } } else { changeList.RemoveAt(--undoListCount); Redo(); } }
public void Undo() { if (undoListCount == 0) { return; } UndoRedoChange change = (UndoRedoChange)changeList [--undoListCount]; if (change.CheckValid()) { UndoRedoChange res = change.ApplyChange(); if (res != null) { changeList [undoListCount] = res; } else { // Undo failed changeList.RemoveAt(undoListCount); } } else { changeList.RemoveAt(undoListCount); Undo(); } }