Chromium Code Reviews| Index: Source/core/paint/InlineTextBoxPainter.cpp |
| diff --git a/Source/core/paint/InlineTextBoxPainter.cpp b/Source/core/paint/InlineTextBoxPainter.cpp |
| index eccefdcefdec29dc46ad70ed2bf67e374c7e8197..f7fb0127994de4f2793c770951120572e0758604 100644 |
| --- a/Source/core/paint/InlineTextBoxPainter.cpp |
| +++ b/Source/core/paint/InlineTextBoxPainter.cpp |
| @@ -79,8 +79,8 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
| } |
| // Determine whether or not we have composition underlines to draw. |
| - bool containsComposition = m_inlineTextBox.layoutObject().node() && m_inlineTextBox.layoutObject().frame()->inputMethodController().compositionNode() == m_inlineTextBox.layoutObject().node(); |
| - bool useCustomUnderlines = containsComposition && m_inlineTextBox.layoutObject().frame()->inputMethodController().compositionUsesCustomUnderlines(); |
| + bool containsComposition = m_inlineTextBox.layoutObject().node() && m_inlineTextBox.layoutObject().frame()->inputMethodController().isCompositionNode(m_inlineTextBox.layoutObject().node()); |
|
yosin_UTC9
2015/08/31 01:35:40
Note: |isCompositionNode(Node*)| should be fast, s
|
| + bool useCustomUnderlines = containsComposition && m_inlineTextBox.layoutObject().frame()->inputMethodController().customCompositionUnderlines(m_inlineTextBox.layoutObject().node()); |
| // The text clip phase already has a DrawingRecorder. Text clips are initiated only in BoxPainter::paintLayerExtended, which is already |
| // within a DrawingRecorder. |
| @@ -247,12 +247,13 @@ void InlineTextBoxPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& |
| // Paint custom underlines for compositions. |
| if (useCustomUnderlines) { |
| - const Vector<CompositionUnderline>& underlines = m_inlineTextBox.layoutObject().frame()->inputMethodController().customCompositionUnderlines(); |
| - CompositionUnderlineRangeFilter filter(underlines, m_inlineTextBox.start(), m_inlineTextBox.end()); |
| - for (CompositionUnderlineRangeFilter::ConstIterator it = filter.begin(); it != filter.end(); ++it) { |
| - if (it->color == Color::transparent) |
| - continue; |
| - paintCompositionUnderline(context, boxOrigin, *it); |
| + if (const Vector<CompositionUnderline>* underlines = m_inlineTextBox.layoutObject().frame()->inputMethodController().customCompositionUnderlines(m_inlineTextBox.layoutObject().node())) { |
| + CompositionUnderlineRangeFilter filter(*underlines, m_inlineTextBox.start(), m_inlineTextBox.end()); |
| + for (CompositionUnderlineRangeFilter::ConstIterator it = filter.begin(); it != filter.end(); ++it) { |
| + if (it->color == Color::transparent) |
| + continue; |
| + paintCompositionUnderline(context, boxOrigin, *it); |
| + } |
| } |
| } |
| } |
| @@ -278,14 +279,14 @@ void InlineTextBoxPainter::paintCompositionBackgrounds(GraphicsContext* pt, cons |
| { |
| if (useCustomUnderlines) { |
| // Paint custom background highlights for compositions. |
| - const Vector<CompositionUnderline>& underlines = m_inlineTextBox.layoutObject().frame()->inputMethodController().customCompositionUnderlines(); |
| - CompositionUnderlineRangeFilter filter(underlines, m_inlineTextBox.start(), m_inlineTextBox.end()); |
| - for (CompositionUnderlineRangeFilter::ConstIterator it = filter.begin(); it != filter.end(); ++it) { |
| - if (it->backgroundColor == Color::transparent) |
| - continue; |
| - paintSingleCompositionBackgroundRun(pt, boxOrigin, style, font, it->backgroundColor, underlinePaintStart(*it), underlinePaintEnd(*it)); |
| + if (const Vector<CompositionUnderline>* underlines = m_inlineTextBox.layoutObject().frame()->inputMethodController().customCompositionUnderlines(m_inlineTextBox.layoutObject().node())) { |
| + CompositionUnderlineRangeFilter filter(*underlines, m_inlineTextBox.start(), m_inlineTextBox.end()); |
| + for (CompositionUnderlineRangeFilter::ConstIterator it = filter.begin(); it != filter.end(); ++it) { |
| + if (it->backgroundColor == Color::transparent) |
| + continue; |
| + paintSingleCompositionBackgroundRun(pt, boxOrigin, style, font, it->backgroundColor, underlinePaintStart(*it), underlinePaintEnd(*it)); |
| + } |
| } |
| - |
| } else { |
| paintSingleCompositionBackgroundRun(pt, boxOrigin, style, font, LayoutTheme::theme().platformDefaultCompositionBackgroundColor(), |
| m_inlineTextBox.layoutObject().frame()->inputMethodController().compositionStart(), |