internal void CreateUndoSnapshot(ModelObject target, bool visualOnly) { if (changedList.Count == 0) { version++; if (!suspended && !scheduled) { Schedule(); } } undoBatchVisualOnly &= visualOnly; if (target.objectVersion == version) { return; } changedList.Add(target); target.objectVersion = version; if (visualOnly && undo.Count > 0 && undo.Peek().Contains(target)) { return; } var builder = target.GetUndoBuilder(); currentUndoBatch.Add(builder.MakeUndoSnapshot(target)); }
public UndoSnapshot Restore() { var builder = target.GetUndoBuilder(); var redo = builder.MakeUndoSnapshot(target); builder.RevertToUndoSnapshot(target, this); return(redo); }