Chromium Code Reviews| Index: Source/core/paint/EllipsisBoxPainter.cpp |
| diff --git a/Source/core/paint/EllipsisBoxPainter.cpp b/Source/core/paint/EllipsisBoxPainter.cpp |
| index 360fe40ffe27916d298d26fe2530cf42c901f335..8d9f87b35962936f67a9e21c179f7f1c863cd437 100644 |
| --- a/Source/core/paint/EllipsisBoxPainter.cpp |
| +++ b/Source/core/paint/EllipsisBoxPainter.cpp |
| @@ -23,23 +23,29 @@ void EllipsisBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pa |
| void EllipsisBoxPainter::paintEllipsis(const PaintInfo& paintInfo, const LayoutPoint& paintOffset, LayoutUnit lineTop, LayoutUnit lineBottom, const ComputedStyle& style) |
| { |
| + bool isPrinting = m_ellipsisBox.layoutObject().document().printing(); |
|
chrishtr
2015/06/05 16:46:06
EllipsisBox inherits from InlineBox. Can you lever
fs
2015/06/05 17:14:03
I don't see how I could - InlineBox (this CL) vs.
|
| + bool haveSelection = !isPrinting && paintInfo.phase != PaintPhaseTextClip && m_ellipsisBox.selectionState() != LayoutObject::SelectionNone; |
| + |
| + LayoutRect paintRect(m_ellipsisBox.logicalFrameRect()); |
| + if (haveSelection) |
| + paintRect.unite(LayoutRect(m_ellipsisBox.selectionRect())); |
| + paintRect = m_ellipsisBox.logicalRectToPhysicalRect(paintRect); |
| + paintRect.moveBy(paintOffset); |
| + |
| GraphicsContext* context = paintInfo.context; |
| + DrawingRecorder recorder(*context, m_ellipsisBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase), paintRect); |
| + if (recorder.canUseCachedDrawing()) |
| + return; |
| + |
| LayoutPoint boxOrigin = m_ellipsisBox.locationIncludingFlipping(); |
| boxOrigin.moveBy(paintOffset); |
| LayoutRect boxRect(boxOrigin, LayoutSize(m_ellipsisBox.logicalWidth(), m_ellipsisBox.virtualLogicalHeight())); |
| - DrawingRecorder recorder(*context, m_ellipsisBox, DisplayItem::paintPhaseToDrawingType(paintInfo.phase), boxRect); |
| - if (recorder.canUseCachedDrawing()) |
| - return; |
| - |
| GraphicsContextStateSaver stateSaver(*context); |
| if (!m_ellipsisBox.isHorizontal()) |
| context->concatCTM(TextPainter::rotation(boxRect, TextPainter::Clockwise)); |
| - const Font& font = style.font(); |
| - LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.fontMetrics().ascent()); |
| - bool isPrinting = m_ellipsisBox.layoutObject().document().printing(); |
| - bool haveSelection = !isPrinting && paintInfo.phase != PaintPhaseTextClip && m_ellipsisBox.selectionState() != LayoutObject::SelectionNone; |
| + const Font& font = style.font(); |
| if (haveSelection) |
| paintSelection(context, boxOrigin, style, font); |
| @@ -51,6 +57,7 @@ void EllipsisBoxPainter::paintEllipsis(const PaintInfo& paintInfo, const LayoutP |
| textStyle = TextPainter::selectionPaintingStyle(m_ellipsisBox.layoutObject(), true, paintInfo.forceBlackText(), isPrinting, textStyle); |
| TextRun textRun = constructTextRun(&m_ellipsisBox.layoutObject(), font, m_ellipsisBox.ellipsisStr(), style, TextRun::AllowTrailingExpansion); |
| + LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.fontMetrics().ascent()); |
| TextPainter textPainter(context, font, textRun, textOrigin, boxRect, m_ellipsisBox.isHorizontal()); |
| textPainter.paint(0, m_ellipsisBox.ellipsisStr().length(), m_ellipsisBox.ellipsisStr().length(), textStyle); |
| } |