/// <summary> /// Adjust the start and end of the range to match the offset/length, in characters. /// if the offset/length adjustment fails to produce the expected value, /// then the adjustment is cancelled and false is returned. /// </summary> public static bool AdjustMarkupRange(ref IHTMLTxtRange stagingTextRange, MarkupRange range, int offset, int length) { string currentText = GetRangeTextFast(range) ?? ""; if (offset == 0 && length == currentText.Length) { return(true); } string expectedText; try { expectedText = currentText.Substring(offset, length); } catch (ArgumentOutOfRangeException) { return(false); } MarkupRange testRange = range.Clone(); AdjustMarkupRangeCore(testRange, offset, length, currentText); if (GetRangeTextFast(testRange) != expectedText) { return(false); } range.MoveToRange(testRange); return(true); }