| Index: Source/core/rendering/InlineTextBox.cpp
|
| diff --git a/Source/core/rendering/InlineTextBox.cpp b/Source/core/rendering/InlineTextBox.cpp
|
| index 27948545287d9763242e1c69a427cd870093470c..d0e71728d552b90b19a436e65d7430df1970323f 100644
|
| --- a/Source/core/rendering/InlineTextBox.cpp
|
| +++ b/Source/core/rendering/InlineTextBox.cpp
|
| @@ -305,7 +305,7 @@ float InlineTextBox::placeEllipsisBox(bool flowIsLTR, float visibleLeftEdge, flo
|
|
|
| // If we got here that means that we were only partially truncated and we need to return the pixel offset at which
|
| // to place the ellipsis.
|
| - float widthOfVisibleText = toRenderText(renderer())->width(m_start, offset, textPos(), isFirstLineStyle());
|
| + float widthOfVisibleText = toRenderText(renderer())->width(m_start, offset, textPos(), flowIsLTR ? LTR : RTL, isFirstLineStyle());
|
|
|
| // The ellipsis needs to be placed just after the last visible character.
|
| // Where "after" is defined by the flow directionality, not the inline
|
| @@ -504,7 +504,7 @@ void InlineTextBox::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset,
|
| // farther to the right.
|
| // NOTE: WebKit's behavior differs from that of IE which appears to just overlay the ellipsis on top of the
|
| // truncated string i.e. |Hello|CBA| -> |...lo|CBA|
|
| - LayoutUnit widthOfVisibleText = toRenderText(renderer())->width(m_start, m_truncation, textPos(), isFirstLineStyle());
|
| + LayoutUnit widthOfVisibleText = toRenderText(renderer())->width(m_start, m_truncation, textPos(), isLeftToRightDirection() ? LTR : RTL, isFirstLineStyle());
|
| LayoutUnit widthOfHiddenText = m_logicalWidth - widthOfVisibleText;
|
| // FIXME: The hit testing logic also needs to take this translation into account.
|
| LayoutSize truncationOffset(isLeftToRightDirection() ? widthOfHiddenText : -widthOfHiddenText, 0);
|
| @@ -1062,7 +1062,7 @@ void InlineTextBox::paintDecoration(GraphicsContext* context, const FloatPoint&
|
|
|
| float width = m_logicalWidth;
|
| if (m_truncation != cNoTruncation) {
|
| - width = toRenderText(renderer())->width(m_start, m_truncation, textPos(), isFirstLineStyle());
|
| + width = toRenderText(renderer())->width(m_start, m_truncation, textPos(), isLeftToRightDirection() ? LTR : RTL, isFirstLineStyle());
|
| if (!isLeftToRightDirection())
|
| localOrigin.move(m_logicalWidth - width, 0);
|
| }
|
| @@ -1349,7 +1349,7 @@ void InlineTextBox::paintCompositionUnderline(GraphicsContext* ctx, const FloatP
|
| if (paintStart <= underline.startOffset) {
|
| paintStart = underline.startOffset;
|
| useWholeWidth = false;
|
| - start = toRenderText(renderer())->width(m_start, paintStart - m_start, textPos(), isFirstLineStyle());
|
| + start = toRenderText(renderer())->width(m_start, paintStart - m_start, textPos(), isLeftToRightDirection() ? LTR : RTL, isFirstLineStyle());
|
| }
|
| if (paintEnd != underline.endOffset) { // end points at the last char, not past it
|
| paintEnd = min(paintEnd, (unsigned)underline.endOffset);
|
| @@ -1360,7 +1360,7 @@ void InlineTextBox::paintCompositionUnderline(GraphicsContext* ctx, const FloatP
|
| useWholeWidth = false;
|
| }
|
| if (!useWholeWidth) {
|
| - width = toRenderText(renderer())->width(paintStart, paintEnd - paintStart, textPos() + start, isFirstLineStyle());
|
| + width = toRenderText(renderer())->width(paintStart, paintEnd - paintStart, textPos() + start, isLeftToRightDirection() ? LTR : RTL, isFirstLineStyle());
|
| }
|
|
|
| // Thick marked text underlines are 2px thick as long as there is room for the 2px line under the baseline.
|
|
|