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(), |