public override object ApplyUndoRedoDiff(object diff) { ObjectDiff[] data = (ObjectDiff[])diff; XmlElement status = UndoManager.GetObjectStatus(this); XmlElement oldElem = (XmlElement)status.CloneNode(true); ObjectDiff propsDiff = data [0]; if (propsDiff != null) { propDiffGenerator.ApplyDiff(status, propsDiff); ReadProperties(new ObjectReader(Project, FileFormat.Native), status); data [0] = propDiffGenerator.GetDiff(status, oldElem); } ObjectDiff actionsDiff = data [1]; if (actionsDiff != null) { LocalActionGroups.ApplyDiff(Project, actionsDiff); data [1] = LocalActionGroups.GetDiff(Project, oldElem); } return(data); }
public override object ApplyUndoRedoDiff(object diff) { ObjectDiff actionsDiff = (ObjectDiff)diff; XmlElement status = UndoManager.GetObjectStatus(this); DiffGenerator differ = GetDiffGenerator(); differ.ApplyDiff(this, actionsDiff); actionsDiff = differ.GetDiff(this, status); UndoWriter writer = new UndoWriter(status.OwnerDocument, UndoManager); XmlElement newElem = Write(writer); UndoManager.UpdateObjectStatus(this, newElem); return(actionsDiff); }