Index: Source/core/rendering/RenderBlockLineLayout.cpp |
diff --git a/Source/core/rendering/RenderBlockLineLayout.cpp b/Source/core/rendering/RenderBlockLineLayout.cpp |
index 0021038be616e451e1fd6f3405e54d7929136b8e..fffb5668976e0880f6f19f39371bfbc21f613ddf 100644 |
--- a/Source/core/rendering/RenderBlockLineLayout.cpp |
+++ b/Source/core/rendering/RenderBlockLineLayout.cpp |
@@ -586,9 +586,7 @@ static void updateLogicalInlinePositions(RenderBlockFlow* block, float& lineLogi |
{ |
LayoutUnit lineLogicalHeight = block->minLineHeightForReplacedRenderer(firstLine, boxLogicalHeight); |
lineLogicalLeft = block->logicalLeftOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat(); |
- // FIXME: This shouldn't be pixel snapped once multicolumn layout has been updated to correctly carry over subpixel values. |
- // https://bugs.webkit.org/show_bug.cgi?id=105461 |
- lineLogicalRight = block->pixelSnappedLogicalRightOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat(); |
+ lineLogicalRight = block->logicalRightOffsetForLine(block->logicalHeight(), shouldIndentText == IndentText, lineLogicalHeight).toFloat(); |
availableLogicalWidth = lineLogicalRight - lineLogicalLeft; |
} |
@@ -2065,7 +2063,7 @@ void RenderBlockFlow::deleteEllipsisLineBoxes() |
curr->clearTruncation(); |
// Shift the line back where it belongs if we cannot accomodate an ellipsis. |
- float logicalLeft = pixelSnappedLogicalLeftOffsetForLine(curr->lineTop(), firstLine).toFloat(); |
+ float logicalLeft = logicalLeftOffsetForLine(curr->lineTop(), firstLine).toFloat(); |
float availableLogicalWidth = logicalRightOffsetForLine(curr->lineTop(), false) - logicalLeft; |
float totalLogicalWidth = curr->logicalWidth(); |
updateLogicalWidthForAlignment(textAlign, curr, 0, logicalLeft, totalLogicalWidth, availableLogicalWidth, 0); |
@@ -2088,8 +2086,8 @@ void RenderBlockFlow::checkLinesForTextOverflow() |
const Font& firstLineFont = firstLineStyle()->font(); |
// FIXME: We should probably not hard-code the direction here. https://crbug.com/333004 |
TextDirection ellipsisDirection = LTR; |
- int firstLineEllipsisWidth = firstLineFont.width(constructTextRun(this, firstLineFont, &horizontalEllipsis, 1, firstLineStyle(), ellipsisDirection)); |
- int ellipsisWidth = (font == firstLineFont) ? firstLineEllipsisWidth : font.width(constructTextRun(this, font, &horizontalEllipsis, 1, style(), ellipsisDirection)); |
+ float firstLineEllipsisWidth = firstLineFont.width(constructTextRun(this, firstLineFont, &horizontalEllipsis, 1, firstLineStyle(), ellipsisDirection)); |
+ float ellipsisWidth = (font == firstLineFont) ? firstLineEllipsisWidth : font.width(constructTextRun(this, font, &horizontalEllipsis, 1, style(), ellipsisDirection)); |
// For LTR text truncation, we want to get the right edge of our padding box, and then we want to see |
// if the right edge of a line box exceeds that. For RTL, we use the left edge of the padding box and |
@@ -2099,12 +2097,10 @@ void RenderBlockFlow::checkLinesForTextOverflow() |
ETextAlign textAlign = style()->textAlign(); |
bool firstLine = true; |
for (RootInlineBox* curr = firstRootBox(); curr; curr = curr->nextRootBox()) { |
- // FIXME: Use pixelSnappedLogicalRightOffsetForLine instead of snapping it ourselves once the column workaround in said method has been fixed. |
- // https://bugs.webkit.org/show_bug.cgi?id=105461 |
float currLogicalLeft = curr->logicalLeft(); |
- int blockRightEdge = snapSizeToPixel(logicalRightOffsetForLine(curr->lineTop(), firstLine), currLogicalLeft); |
- int blockLeftEdge = pixelSnappedLogicalLeftOffsetForLine(curr->lineTop(), firstLine); |
- int lineBoxEdge = ltr ? snapSizeToPixel(currLogicalLeft + curr->logicalWidth(), currLogicalLeft) : snapSizeToPixel(currLogicalLeft, 0); |
+ LayoutUnit blockRightEdge = logicalRightOffsetForLine(curr->lineTop(), firstLine); |
+ LayoutUnit blockLeftEdge = logicalLeftOffsetForLine(curr->lineTop(), firstLine); |
+ LayoutUnit lineBoxEdge = ltr ? currLogicalLeft + curr->logicalWidth() : currLogicalLeft; |
if ((ltr && lineBoxEdge > blockRightEdge) || (!ltr && lineBoxEdge < blockLeftEdge)) { |
// This line spills out of our box in the appropriate direction. Now we need to see if the line |
// can be truncated. In order for truncation to be possible, the line must have sufficient space to |
@@ -2114,11 +2110,10 @@ void RenderBlockFlow::checkLinesForTextOverflow() |
LayoutUnit width = firstLine ? firstLineEllipsisWidth : ellipsisWidth; |
LayoutUnit blockEdge = ltr ? blockRightEdge : blockLeftEdge; |
if (curr->lineCanAccommodateEllipsis(ltr, blockEdge, lineBoxEdge, width)) { |
- float totalLogicalWidth = curr->placeEllipsis(ellipsisStr, ltr, blockLeftEdge, blockRightEdge, width.toFloat()); |
+ float totalLogicalWidth = curr->placeEllipsis(ellipsisStr, ltr, blockLeftEdge.toFloat(), blockRightEdge.toFloat(), width.toFloat()); |
float logicalLeft = 0; // We are only intersted in the delta from the base position. |
- float snappedLogicalLeft = pixelSnappedLogicalLeftOffsetForLine(curr->lineTop(), firstLine).toFloat(); |
- float availableLogicalWidth = pixelSnappedLogicalRightOffsetForLine(curr->lineTop(), firstLine) - snappedLogicalLeft; |
+ float availableLogicalWidth = (blockRightEdge - blockLeftEdge).toFloat(); |
updateLogicalWidthForAlignment(textAlign, curr, 0, logicalLeft, totalLogicalWidth, availableLogicalWidth, 0); |
if (ltr) |
curr->adjustLogicalPosition(logicalLeft, 0); |