| Index: Source/core/rendering/RenderText.cpp
|
| diff --git a/Source/core/rendering/RenderText.cpp b/Source/core/rendering/RenderText.cpp
|
| index 13d84d9aa8aa899b96369c50f4357126d6e4361e..acf10421cc0fe79bc56a90d5ffb61bb82e35976a 100644
|
| --- a/Source/core/rendering/RenderText.cpp
|
| +++ b/Source/core/rendering/RenderText.cpp
|
| @@ -819,7 +819,7 @@ void RenderText::trimmedPrefWidths(float leadWidth,
|
| }
|
| }
|
|
|
| - stripFrontSpaces = collapseWhiteSpace && m_hasBreakableEnd;
|
| + stripFrontSpaces = collapseWhiteSpace && m_hasEndWhiteSpace;
|
|
|
| if (!style()->autoWrap() || minWidth > maxWidth)
|
| minWidth = maxWidth;
|
| @@ -948,6 +948,7 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
|
| m_hasTab = false;
|
| m_hasBreakableStart = false;
|
| m_hasBreakableEnd = false;
|
| + m_hasEndWhiteSpace = false;
|
|
|
| RenderStyle* styleToUse = style();
|
| const Font& f = styleToUse->font(); // FIXME: This ignores first-line.
|
| @@ -1010,10 +1011,13 @@ void RenderText::computePreferredLogicalWidths(float leadWidth, HashSet<const Si
|
| } else
|
| isSpace = c == ' ';
|
|
|
| - if ((isSpace || isNewline) && !i)
|
| - m_hasBreakableStart = true;
|
| - if ((isSpace || isNewline) && i == len - 1)
|
| - m_hasBreakableEnd = true;
|
| + bool isBreakableLocation = isNewline || (isSpace && styleToUse->autoWrap());
|
| + if (!i)
|
| + m_hasBreakableStart = isBreakableLocation;
|
| + if (i == len - 1) {
|
| + m_hasBreakableEnd = isBreakableLocation;
|
| + m_hasEndWhiteSpace = isNewline || isSpace;
|
| + }
|
|
|
| if (!ignoringSpaces && styleToUse->collapseWhiteSpace() && previousCharacterIsSpace && isSpace)
|
| ignoringSpaces = true;
|
|
|