| Index: Source/core/rendering/RenderBlock.cpp
|
| diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
|
| index be6d90263416d5ef3b53e4dbea77cae80eb3a39d..5fd8b755ff0924efbfbda017f9bd053c0a10c1e2 100644
|
| --- a/Source/core/rendering/RenderBlock.cpp
|
| +++ b/Source/core/rendering/RenderBlock.cpp
|
| @@ -6134,16 +6134,17 @@ void RenderBlock::computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidt
|
| // then they shouldn't be considered in the breakable char
|
| // check.
|
| bool hasBreakableChar, hasBreak;
|
| - float beginMin, endMin;
|
| - bool beginWS, endWS;
|
| - float beginMax, endMax;
|
| - t->trimmedPrefWidths(inlineMax, beginMin, beginWS, endMin, endWS,
|
| - hasBreakableChar, hasBreak, beginMax, endMax,
|
| - childMin, childMax, stripFrontSpaces);
|
| + float firstLineMinWidth, lastLineMinWidth;
|
| + bool hasBreakableStart, hasBreakableEnd;
|
| + float firstLineMaxWidth, lastLineMaxWidth;
|
| + t->trimmedPrefWidths(inlineMax,
|
| + firstLineMinWidth, hasBreakableStart, lastLineMinWidth, hasBreakableEnd,
|
| + hasBreakableChar, hasBreak, firstLineMaxWidth, lastLineMaxWidth,
|
| + childMin, childMax, stripFrontSpaces);
|
|
|
| // This text object will not be rendered, but it may still provide a breaking opportunity.
|
| if (!hasBreak && childMax == 0) {
|
| - if (autoWrap && (beginWS || endWS)) {
|
| + if (autoWrap && (hasBreakableStart || hasBreakableEnd)) {
|
| updatePreferredWidth(minLogicalWidth, inlineMin);
|
| inlineMin = 0;
|
| }
|
| @@ -6160,14 +6161,14 @@ void RenderBlock::computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidt
|
| if (!addedTextIndent || hasRemainingNegativeTextIndent) {
|
| ti = textIndent.ceilToFloat();
|
| childMin += ti;
|
| - beginMin += ti;
|
| + firstLineMinWidth += ti;
|
|
|
| // It the text indent negative and larger than the child minimum, we re-use the remainder
|
| // in future minimum calculations, but using the negative value again on the maximum
|
| // will lead to under-counting the max pref width.
|
| if (!addedTextIndent) {
|
| childMax += ti;
|
| - beginMax += ti;
|
| + firstLineMaxWidth += ti;
|
| addedTextIndent = true;
|
| }
|
|
|
| @@ -6183,40 +6184,36 @@ void RenderBlock::computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidt
|
| if (!hasBreakableChar) {
|
| inlineMin += childMin;
|
| } else {
|
| - // We have a breakable character. Now we need to know if
|
| - // we start and end with whitespace.
|
| - if (beginWS)
|
| - // Go ahead and end the current line.
|
| + if (hasBreakableStart) {
|
| updatePreferredWidth(minLogicalWidth, inlineMin);
|
| - else {
|
| - inlineMin += beginMin;
|
| + } else {
|
| + inlineMin += firstLineMinWidth;
|
| updatePreferredWidth(minLogicalWidth, inlineMin);
|
| childMin -= ti;
|
| }
|
|
|
| inlineMin = childMin;
|
|
|
| - if (endWS) {
|
| - // We end in whitespace, which means we can go ahead
|
| - // and end our current line.
|
| + if (hasBreakableEnd) {
|
| updatePreferredWidth(minLogicalWidth, inlineMin);
|
| inlineMin = 0;
|
| shouldBreakLineAfterText = false;
|
| } else {
|
| updatePreferredWidth(minLogicalWidth, inlineMin);
|
| - inlineMin = endMin;
|
| + inlineMin = lastLineMinWidth;
|
| shouldBreakLineAfterText = true;
|
| }
|
| }
|
|
|
| if (hasBreak) {
|
| - inlineMax += beginMax;
|
| + inlineMax += firstLineMaxWidth;
|
| updatePreferredWidth(maxLogicalWidth, inlineMax);
|
| updatePreferredWidth(maxLogicalWidth, childMax);
|
| - inlineMax = endMax;
|
| + inlineMax = lastLineMaxWidth;
|
| addedTextIndent = true;
|
| - } else
|
| + } else {
|
| inlineMax += max<float>(0, childMax);
|
| + }
|
| }
|
|
|
| // Ignore spaces after a list marker.
|
|
|