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(); } }
public void AddChange (UndoRedoChange change) { if (undoListCount < changeList.Count) { // Destroy all undone changes changeList.RemoveRange (undoListCount, changeList.Count - undoListCount); } changeList.Add (change); undoListCount = changeList.Count; }
public void AddChange(UndoRedoChange change) { if (undoListCount < changeList.Count) { // Destroy all undone changes changeList.RemoveRange(undoListCount, changeList.Count - undoListCount); } changeList.Add(change); undoListCount = changeList.Count; }
public void Purge() { for (int n = 0; n < changeList.Count; n++) { UndoRedoChange change = (UndoRedoChange)changeList [n]; if (!change.CheckValid()) { changeList.RemoveAt(n); if (n < undoListCount) { undoListCount--; } } } }