Bug 1286464 part.11 nsTextFrame::GetCharacterRectsInRange() shouldn't compute character rect at the first character in next nsTextFrame r=jfkthame
nsTextFrame::GetCharacterRectsInRange() handles a character at the end offset of its content as in it. However, it causes odd result when the caller wants first text rect in the next nsTextFrame. E.g., if end of query range is at the next nsTextFrame's first character, currently, it returns the last character as in same line.
So, it should stop handling next frame's first character as in it.
MozReview-Commit-ID: 7WteerisrZp
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -7449,17 +7449,17 @@ nsTextFrame::GetCharacterRectsInRange(in
PropertyProvider properties(this, iter, nsTextFrame::eInflated);
// Don't trim trailing whitespace, we want the caret to appear in the right
// place if it's positioned there
properties.InitializeForDisplay(false);
UpdateIteratorFromOffset(properties, aInOffset, iter);
const int32_t kContentEnd = GetContentEnd();
- const int32_t kEndOffset = std::min(aInOffset + aLength, kContentEnd + 1);
+ const int32_t kEndOffset = std::min(aInOffset + aLength, kContentEnd);
while (aInOffset < kEndOffset) {
if (!iter.IsOriginalCharSkipped() &&
!mTextRun->IsClusterStart(iter.GetSkippedOffset())) {
FindClusterStart(mTextRun,
properties.GetStart().GetOriginalOffset() +
properties.GetOriginalLength(),
&iter);
}