| Index: third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| index 2c098f8103398be488da34688e79155e88d0f803..2fec4ee3304a90a8a87b05cee2def5a9a4f896dc 100644
|
| --- a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
|
| @@ -389,7 +389,7 @@ void InlineFlowBox::placeBoxRangeInInlineDirection(InlineBox* firstChild, Inline
|
| LayoutUnit space;
|
| if (rt.textLength()) {
|
| if (needsWordSpacing && isSpaceOrNewline(rt.characterAt(text->start())))
|
| - space = rt.style(isFirstLineStyle())->font().fontDescription().wordSpacing();
|
| + space = LayoutUnit(rt.style(isFirstLineStyle())->font().fontDescription().wordSpacing());
|
| needsWordSpacing = !isSpaceOrNewline(rt.characterAt(text->end()));
|
| }
|
| if (isLeftToRightDirection()) {
|
| @@ -547,7 +547,7 @@ void InlineFlowBox::computeLogicalBoxHeights(RootInlineBox* rootBox, LayoutUnit&
|
| int descent = 0;
|
| rootBox->ascentAndDescentForBox(curr, textBoxDataMap, ascent, descent, affectsAscent, affectsDescent);
|
|
|
| - LayoutUnit boxHeight = ascent + descent;
|
| + LayoutUnit boxHeight(ascent + descent);
|
| if (curr->verticalAlign() == TOP) {
|
| if (maxPositionTop < boxHeight)
|
| maxPositionTop = boxHeight;
|
| @@ -586,7 +586,7 @@ void InlineFlowBox::placeBoxesInBlockDirection(LayoutUnit top, LayoutUnit maxHei
|
| const FontMetrics& fontMetrics = lineLayoutItem().style(isFirstLineStyle())->fontMetrics();
|
| // RootInlineBoxes are always placed at pixel boundaries in their logical y direction. Not doing
|
| // so results in incorrect layout of text decorations, most notably underlines.
|
| - setLogicalTop(roundToInt(top + maxAscent - fontMetrics.ascent(baselineType)));
|
| + setLogicalTop(LayoutUnit(roundToInt(top + maxAscent - fontMetrics.ascent(baselineType))));
|
| }
|
|
|
| LayoutUnit adjustmentForChildrenWithSameLineHeightAndBaseline;
|
| @@ -615,7 +615,7 @@ void InlineFlowBox::placeBoxesInBlockDirection(LayoutUnit top, LayoutUnit maxHei
|
| if (!noQuirksMode && inlineFlowBox && !inlineFlowBox->hasTextChildren() && !curr->boxModelObject().hasInlineDirectionBordersOrPadding()
|
| && !(inlineFlowBox->descendantsHaveSameLineHeightAndBaseline() && inlineFlowBox->hasTextDescendants()))
|
| childAffectsTopBottomPos = false;
|
| - LayoutUnit posAdjust = maxAscent - curr->baselinePosition(baselineType);
|
| + int posAdjust = maxAscent - curr->baselinePosition(baselineType);
|
| curr->setLogicalTop(curr->logicalTop() + top + posAdjust);
|
| }
|
|
|
| @@ -698,14 +698,14 @@ void InlineFlowBox::placeBoxesInBlockDirection(LayoutUnit top, LayoutUnit maxHei
|
| if (noQuirksMode || hasTextChildren() || (descendantsHaveSameLineHeightAndBaseline() && hasTextDescendants())) {
|
| if (!setLineTop) {
|
| setLineTop = true;
|
| - lineTop = pixelSnappedLogicalTop();
|
| + lineTop = LayoutUnit(pixelSnappedLogicalTop());
|
| lineTopIncludingMargins = lineTop;
|
| } else {
|
| - lineTop = std::min<LayoutUnit>(lineTop, pixelSnappedLogicalTop());
|
| + lineTop = std::min(lineTop, LayoutUnit(pixelSnappedLogicalTop()));
|
| lineTopIncludingMargins = std::min(lineTop, lineTopIncludingMargins);
|
| }
|
| - selectionBottom = std::max<LayoutUnit>(selectionBottom, pixelSnappedLogicalBottom());
|
| - lineBottom = std::max<LayoutUnit>(lineBottom, pixelSnappedLogicalBottom());
|
| + selectionBottom = std::max(selectionBottom, LayoutUnit(pixelSnappedLogicalBottom()));
|
| + lineBottom = std::max(lineBottom, LayoutUnit(pixelSnappedLogicalBottom()));
|
| lineBottomIncludingMargins = std::max(lineBottom, lineBottomIncludingMargins);
|
| }
|
|
|
| @@ -856,20 +856,20 @@ inline void InlineFlowBox::addTextBoxVisualOverflow(InlineTextBox* textBox, Glyp
|
| LayoutUnit textShadowLogicalLeft = -textShadowLogicalOutsets.left();
|
| LayoutUnit textShadowLogicalRight = textShadowLogicalOutsets.right();
|
|
|
| - LayoutUnit childOverflowLogicalTop = std::min<LayoutUnit>(textShadowLogicalTop + topGlyphOverflow, topGlyphOverflow);
|
| - LayoutUnit childOverflowLogicalBottom = std::max<LayoutUnit>(textShadowLogicalBottom + bottomGlyphOverflow, bottomGlyphOverflow);
|
| - LayoutUnit childOverflowLogicalLeft = std::min<LayoutUnit>(textShadowLogicalLeft + leftGlyphOverflow, leftGlyphOverflow);
|
| - LayoutUnit childOverflowLogicalRight = std::max<LayoutUnit>(textShadowLogicalRight + rightGlyphOverflow, rightGlyphOverflow);
|
| + LayoutUnit childOverflowLogicalTop(std::min(textShadowLogicalTop + topGlyphOverflow, topGlyphOverflow));
|
| + LayoutUnit childOverflowLogicalBottom(std::max(textShadowLogicalBottom + bottomGlyphOverflow, bottomGlyphOverflow));
|
| + LayoutUnit childOverflowLogicalLeft(std::min(textShadowLogicalLeft + leftGlyphOverflow, leftGlyphOverflow));
|
| + LayoutUnit childOverflowLogicalRight(std::max(textShadowLogicalRight + rightGlyphOverflow, rightGlyphOverflow));
|
|
|
| int enclosingLogicalTopWithOverflow = (textBox->logicalTop() + childOverflowLogicalTop).floor();
|
| int enclosingLogicalBottomWithOverflow = (textBox->logicalBottom() + childOverflowLogicalBottom).ceil();
|
| int enclosingLogicalLeftWithOverflow = (textBox->logicalLeft() + childOverflowLogicalLeft).floor();
|
| int enclosingLogicalRightWithOverflow = (textBox->logicalRight() + childOverflowLogicalRight).ceil();
|
|
|
| - LayoutUnit logicalTopVisualOverflow = std::min<LayoutUnit>(enclosingLogicalTopWithOverflow, logicalVisualOverflow.y());
|
| - LayoutUnit logicalBottomVisualOverflow = std::max<LayoutUnit>(enclosingLogicalBottomWithOverflow, logicalVisualOverflow.maxY());
|
| - LayoutUnit logicalLeftVisualOverflow = std::min<LayoutUnit>(enclosingLogicalLeftWithOverflow, logicalVisualOverflow.x());
|
| - LayoutUnit logicalRightVisualOverflow = std::max<LayoutUnit>(enclosingLogicalRightWithOverflow, logicalVisualOverflow.maxX());
|
| + LayoutUnit logicalTopVisualOverflow = std::min(LayoutUnit(enclosingLogicalTopWithOverflow), logicalVisualOverflow.y());
|
| + LayoutUnit logicalBottomVisualOverflow = std::max(LayoutUnit(enclosingLogicalBottomWithOverflow), logicalVisualOverflow.maxY());
|
| + LayoutUnit logicalLeftVisualOverflow = std::min(LayoutUnit(enclosingLogicalLeftWithOverflow), logicalVisualOverflow.x());
|
| + LayoutUnit logicalRightVisualOverflow = std::max(LayoutUnit(enclosingLogicalRightWithOverflow), logicalVisualOverflow.maxX());
|
|
|
| logicalVisualOverflow = LayoutRect(logicalLeftVisualOverflow, logicalTopVisualOverflow, logicalRightVisualOverflow - logicalLeftVisualOverflow, logicalBottomVisualOverflow - logicalTopVisualOverflow);
|
|
|
| @@ -1104,7 +1104,7 @@ bool InlineFlowBox::canAccommodateEllipsis(bool ltr, int blockEdge, int ellipsis
|
|
|
| LayoutUnit InlineFlowBox::placeEllipsisBox(bool ltr, LayoutUnit blockLeftEdge, LayoutUnit blockRightEdge, LayoutUnit ellipsisWidth, LayoutUnit &truncatedWidth, bool& foundBox)
|
| {
|
| - LayoutUnit result = -1;
|
| + LayoutUnit result(-1);
|
| // We iterate over all children, the foundBox variable tells us when we've found the
|
| // box containing the ellipsis. All boxes after that one in the flow are hidden.
|
| // If our flow is ltr then iterate over the boxes from left to right, otherwise iterate
|
| @@ -1116,9 +1116,10 @@ LayoutUnit InlineFlowBox::placeEllipsisBox(bool ltr, LayoutUnit blockLeftEdge, L
|
| int visibleRightEdge = blockRightEdge;
|
|
|
| while (box) {
|
| - int currResult = box->placeEllipsisBox(ltr, visibleLeftEdge, visibleRightEdge, ellipsisWidth, truncatedWidth, foundBox);
|
| + int currResult = box->placeEllipsisBox(ltr, LayoutUnit(visibleLeftEdge), LayoutUnit(visibleRightEdge),
|
| + ellipsisWidth, truncatedWidth, foundBox);
|
| if (currResult != -1 && result == -1)
|
| - result = currResult;
|
| + result = LayoutUnit(currResult);
|
|
|
| if (ltr) {
|
| visibleLeftEdge += box->logicalWidth().round();
|
|
|