Ejemplo n.º 1
0
        public override ObjectWrapper ReadObject(XmlElement elem, ObjectWrapper root)
        {
            ObjectWrapper ww = base.ReadObject(elem, root);

            if (ww is Widget)
            {
                undoManager.RegisterObject((Widget)ww, elem);
            }
            return(ww);
        }
Ejemplo n.º 2
0
        public override XmlElement WriteObject(ObjectWrapper wrapper)
        {
            Wrapper.Widget ww = wrapper as Wrapper.Widget;

            // If the object is already registered, skip it (just create a dummy object)
            if (allowMarkers && ww != null && undoManager.IsRegistered(ww) && !ww.RequiresUndoStatusUpdate)
            {
                XmlElement marker = XmlDocument.CreateElement("widget");
                marker.SetAttribute("unchanged_marker", "yes");
                return(marker);
            }

            // Don't allow markers in indirect children, since those are not checked
            // when creating the diff
            bool oldAllow = allowMarkers;

            allowMarkers = false;
            XmlElement elem = base.WriteObject(wrapper);

            allowMarkers = oldAllow;

            if (ww != null)
            {
                ww.RequiresUndoStatusUpdate = false;
            }

            // Register the object, so it is correctly bound to this xml element
            if (undoManager.IsRegistered(wrapper))
            {
                undoManager.UnregisterObject(wrapper);
            }
            undoManager.RegisterObject(wrapper, elem);

            return(elem);
        }