Index: third_party/WebKit/Source/core/paint/EllipsisBoxPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/EllipsisBoxPainter.cpp b/third_party/WebKit/Source/core/paint/EllipsisBoxPainter.cpp |
index cbd1ea6d32872da5ef5a78f22ee6cd1d310244ba..825b615542f5e3ddadb9f0db56dbea9dee57e256 100644 |
--- a/third_party/WebKit/Source/core/paint/EllipsisBoxPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/EllipsisBoxPainter.cpp |
@@ -18,17 +18,16 @@ namespace blink { |
void EllipsisBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffset, LayoutUnit lineTop, LayoutUnit lineBottom) |
{ |
+ if (paintInfo.phase == PaintPhaseSelection) |
+ return; |
+ |
const ComputedStyle& style = m_ellipsisBox.getLineLayoutItem().styleRef(m_ellipsisBox.isFirstLineStyle()); |
paintEllipsis(paintInfo, paintOffset, lineTop, lineBottom, style); |
} |
void EllipsisBoxPainter::paintEllipsis(const PaintInfo& paintInfo, const LayoutPoint& paintOffset, LayoutUnit lineTop, LayoutUnit lineBottom, const ComputedStyle& style) |
{ |
- bool haveSelection = !paintInfo.isPrinting() && paintInfo.phase != PaintPhaseTextClip && m_ellipsisBox.getSelectionState() != SelectionNone; |
- |
LayoutRect paintRect(m_ellipsisBox.logicalFrameRect()); |
- if (haveSelection) |
- paintRect.unite(LayoutRect(m_ellipsisBox.selectionRect())); |
m_ellipsisBox.logicalRectToPhysicalRect(paintRect); |
paintRect.moveBy(paintOffset); |
@@ -49,42 +48,11 @@ void EllipsisBoxPainter::paintEllipsis(const PaintInfo& paintInfo, const LayoutP |
const Font& font = style.font(); |
- if (haveSelection) |
- paintSelection(context, boxOrigin, style, font); |
- else if (paintInfo.phase == PaintPhaseSelection) |
- return; |
- |
TextPainter::Style textStyle = TextPainter::textPaintingStyle(m_ellipsisBox.getLineLayoutItem(), style, paintInfo); |
- if (haveSelection) |
- textStyle = TextPainter::selectionPaintingStyle(m_ellipsisBox.getLineLayoutItem(), true, paintInfo, textStyle); |
- |
TextRun textRun = constructTextRun(font, m_ellipsisBox.ellipsisStr(), style, TextRun::AllowTrailingExpansion); |
LayoutPoint textOrigin(boxOrigin.x(), boxOrigin.y() + font.getFontMetrics().ascent()); |
TextPainter textPainter(context, font, textRun, textOrigin, boxRect, m_ellipsisBox.isHorizontal()); |
textPainter.paint(0, m_ellipsisBox.ellipsisStr().length(), m_ellipsisBox.ellipsisStr().length(), textStyle); |
} |
-void EllipsisBoxPainter::paintSelection(GraphicsContext& context, const LayoutPoint& boxOrigin, const ComputedStyle& style, const Font& font) |
-{ |
- Color textColor = m_ellipsisBox.getLineLayoutItem().resolveColor(style, CSSPropertyColor); |
- Color c = m_ellipsisBox.getLineLayoutItem().selectionBackgroundColor(); |
- if (!c.alpha()) |
- return; |
- |
- // If the text color ends up being the same as the selection background, invert the selection |
- // background. |
- if (textColor == c) |
- c = Color(0xff - c.red(), 0xff - c.green(), 0xff - c.blue()); |
- |
- GraphicsContextStateSaver stateSaver(context); |
- LayoutUnit selectionBottom = m_ellipsisBox.root().selectionBottom(); |
- LayoutUnit top = m_ellipsisBox.root().selectionTop(); |
- LayoutUnit h = m_ellipsisBox.root().selectionHeight(); |
- const int deltaY = roundToInt(m_ellipsisBox.getLineLayoutItem().styleRef().isFlippedLinesWritingMode() ? selectionBottom - m_ellipsisBox.logicalBottom() : m_ellipsisBox.logicalTop() - top); |
- const FloatPoint localOrigin(LayoutPoint(boxOrigin.x(), boxOrigin.y() - deltaY)); |
- FloatRect clipRect(localOrigin, FloatSize(LayoutSize(m_ellipsisBox.logicalWidth(), h))); |
- context.clip(clipRect); |
- context.drawHighlightForText(font, constructTextRun(font, m_ellipsisBox.ellipsisStr(), style, TextRun::AllowTrailingExpansion), localOrigin, h.toInt(), c); |
-} |
- |
} // namespace blink |