/// <summary> /// Is called when a part of the line is removed. /// </summary> internal void RemovedLinePart(int startColumn, int length) { if (length == 0) { return; } Debug.Assert(length > 0); if (anchors != null) { List <TextAnchor> deletedAnchors = null; foreach (TextAnchor a in anchors) { if (a.ColumnNumber > startColumn) { if (a.ColumnNumber >= startColumn + length) { a.ColumnNumber -= length; } else { if (deletedAnchors == null) { deletedAnchors = new List <TextAnchor>(); } a.Deleted(); deletedAnchors.Add(a); } } } if (deletedAnchors != null) { foreach (TextAnchor a in deletedAnchors) { anchors.Remove(a); } } } }
/// <summary> /// Is called when a part of the line is removed. /// </summary> internal void RemovedLinePart(ref DeferredEventList deferredEventList, int startColumn, int length) { if (length == 0) { return; } Debug.Assert(length > 0); if (_anchors != null) { List <TextAnchor> deletedAnchors = null; foreach (TextAnchor anchor in _anchors) { if (anchor.ColumnNumber > startColumn) { if (anchor.ColumnNumber >= startColumn + length) { anchor.ColumnNumber -= length; } else { if (deletedAnchors == null) { deletedAnchors = new List <TextAnchor>(); } anchor.Delete(ref deferredEventList); deletedAnchors.Add(anchor); } } } if (deletedAnchors != null) { foreach (TextAnchor anchor in deletedAnchors) { _anchors.Remove(anchor); } } } }