Exemple #1
0
        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));
        }
Exemple #2
0
        public UndoSnapshot Restore()
        {
            var builder = target.GetUndoBuilder();
            var redo    = builder.MakeUndoSnapshot(target);

            builder.RevertToUndoSnapshot(target, this);
            return(redo);
        }