private void OnNodeRemoved(object sender, XmlNodeChangedEventArgs args)
{
if (_ignoreXmlEvents)
return;
bool wasIgnoreDataSetEvents = _ignoreDataSetEvents;
bool wasIgnoreXmlEvents = _ignoreXmlEvents;
bool wasFoliationEnabled = IsFoliationEnabled;
_ignoreDataSetEvents = true;
_ignoreXmlEvents = true;
IsFoliationEnabled = false;
Debug.Assert(DataSet.EnforceConstraints == false);
bool fEnableCascading = DataSet._fEnableCascading;
DataSet._fEnableCascading = false;
try
{
XmlNode node = args.Node;
XmlNode oldParent = args.OldParent;
Debug.Assert(args.NewParent == null);
if (IsConnected(oldParent))
{
// Removing from connected tree to disconnected tree
OnNodeRemovedFromTree(node, oldParent);
}
else
{
// Removing from disconnected tree to disconnected tree: just sync the old region
OnNodeRemovedFromFragment(node, oldParent);
}
}
finally
{
_ignoreDataSetEvents = wasIgnoreDataSetEvents;
_ignoreXmlEvents = wasIgnoreXmlEvents;
IsFoliationEnabled = wasFoliationEnabled;
DataSet._fEnableCascading = fEnableCascading;
}
}