| Index: Source/core/rendering/line/BreakingContextInlineHeaders.h
|
| diff --git a/Source/core/rendering/line/BreakingContextInlineHeaders.h b/Source/core/rendering/line/BreakingContextInlineHeaders.h
|
| index a69e7e684725bdc81fea5ff86814b6afa1c65ee7..40d22de554690255f8a964b16dd3c3c87ba11eea 100644
|
| --- a/Source/core/rendering/line/BreakingContextInlineHeaders.h
|
| +++ b/Source/core/rendering/line/BreakingContextInlineHeaders.h
|
| @@ -807,7 +807,9 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| midWordBreak = m_width.committedWidth() + wrapW + charWidth > m_width.availableWidth();
|
| }
|
|
|
| - bool betweenWords = c == '\n' || (m_currWS != PRE && !m_atStart && isBreakable(m_renderTextInfo.m_lineBreakIterator, m_current.m_pos, m_current.m_nextBreakablePosition));
|
| + int nextBreakablePosition = m_current.nextBreakablePosition();
|
| + bool betweenWords = c == '\n' || (m_currWS != PRE && !m_atStart && isBreakable(m_renderTextInfo.m_lineBreakIterator, m_current.m_pos, nextBreakablePosition));
|
| + m_current.setNextBreakablePosition(nextBreakablePosition);
|
|
|
| if (betweenWords || midWordBreak) {
|
| bool stoppedIgnoringSpaces = false;
|
| @@ -870,7 +872,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| // additional whitespace.
|
| if (!m_width.fitsOnLine(charWidth)) {
|
| lineWasTooWide = true;
|
| - m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.m_nextBreakablePosition);
|
| + m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.nextBreakablePosition());
|
| skipTrailingWhitespace(m_lineBreak, m_lineInfo);
|
| }
|
| }
|
| @@ -909,7 +911,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| if (c == '\n' && m_preservesNewline) {
|
| if (!stoppedIgnoringSpaces && m_current.m_pos > 0)
|
| ensureCharacterGetsLineBox(m_lineMidpointState, m_current);
|
| - m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.m_nextBreakablePosition);
|
| + m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.nextBreakablePosition());
|
| m_lineBreak.increment();
|
| m_lineInfo.setPreviousLineBrokeCleanly(true);
|
| return true;
|
| @@ -918,7 +920,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| if (m_autoWrap && betweenWords) {
|
| m_width.commit();
|
| wrapW = 0;
|
| - m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.m_nextBreakablePosition);
|
| + m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.nextBreakablePosition());
|
| // Auto-wrapping text should not wrap in the middle of a word once it has had an
|
| // opportunity to break after a word.
|
| breakWords = false;
|
| @@ -927,7 +929,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
| if (midWordBreak && !U16_IS_TRAIL(c) && !(category(c) & (Mark_NonSpacing | Mark_Enclosing | Mark_SpacingCombining))) {
|
| // Remember this as a breakable position in case
|
| // adding the end width forces a break.
|
| - m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.m_nextBreakablePosition);
|
| + m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.nextBreakablePosition());
|
| midWordBreak &= (breakWords || breakAll);
|
| }
|
|
|
| @@ -974,7 +976,7 @@ inline bool BreakingContext::handleText(WordMeasurements& wordMeasurements, bool
|
|
|
| if (!m_currentCharacterIsSpace && previousCharacterShouldCollapseIfPreWap) {
|
| if (m_autoWrap && m_currentStyle->breakOnlyAfterWhiteSpace())
|
| - m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.m_nextBreakablePosition);
|
| + m_lineBreak.moveTo(m_current.object(), m_current.m_pos, m_current.nextBreakablePosition());
|
| }
|
|
|
| if (m_collapseWhiteSpace && m_currentCharacterIsSpace && !m_ignoringSpaces)
|
|
|