AvalonStudio.TextEditor.Document.TextAnchorTree.InsertText C# (CSharp) Method

InsertText() private method

private InsertText ( int offset, int length, bool defaultAnchorMovementIsBeforeInsertion ) : void
offset int
length int
defaultAnchorMovementIsBeforeInsertion bool
return void
		private void InsertText(int offset, int length, bool defaultAnchorMovementIsBeforeInsertion)
		{
			if (length == 0 || root == null || offset > root.totalLength)
				return;

			// find the range of nodes that are placed exactly at offset
			// beginNode is inclusive, endNode is exclusive
			if (offset == root.totalLength)
			{
				PerformInsertText(FindActualBeginNode(root.RightMost), null, length, defaultAnchorMovementIsBeforeInsertion);
			}
			else
			{
				var endNode = FindNode(ref offset);
				Debug.Assert(endNode.length > 0);

				if (offset > 0)
				{
					// there are no nodes exactly at offset
					endNode.length += length;
					UpdateAugmentedData(endNode);
				}
				else
				{
					PerformInsertText(FindActualBeginNode(endNode.Predecessor), endNode, length, defaultAnchorMovementIsBeforeInsertion);
				}
			}
			DeleteMarkedNodes();
		}