Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/CaretDisplayItemClient.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/CaretDisplayItemClient.cpp b/third_party/WebKit/Source/core/editing/CaretDisplayItemClient.cpp |
| index 0990fdef8cabca9e3bf7024048e5965ca2a6dc46..acfba08a8a77946c83601c948e92ceb4c38511ea 100644 |
| --- a/third_party/WebKit/Source/core/editing/CaretDisplayItemClient.cpp |
| +++ b/third_party/WebKit/Source/core/editing/CaretDisplayItemClient.cpp |
| @@ -125,6 +125,7 @@ void CaretDisplayItemClient::updateStyleAndLayoutIfNeeded( |
| // intermediate changes of layoutBlock because they are not painted. |
| if (!m_previousLayoutBlock) { |
| m_previousLayoutBlock = m_layoutBlock; |
| + DCHECK(m_visualRectInPreviousLayoutBlock.isEmpty()); |
| m_visualRectInPreviousLayoutBlock = m_visualRect; |
| } |
| @@ -191,6 +192,7 @@ void CaretDisplayItemClient::invalidatePaintInPreviousLayoutBlock( |
| context.paintingLayer->setNeedsRepaint(); |
| objectInvalidator.invalidateDisplayItemClient(*this, PaintInvalidationCaret); |
| m_previousLayoutBlock = nullptr; |
| + m_visualRectInPreviousLayoutBlock = LayoutRect(); |
| } |
| void CaretDisplayItemClient::invalidatePaintInCurrentLayoutBlock( |
| @@ -212,8 +214,11 @@ void CaretDisplayItemClient::invalidatePaintInCurrentLayoutBlock( |
| } |
| } |
| - if (m_layoutBlock == m_previousLayoutBlock) |
| + if (m_layoutBlock == m_previousLayoutBlock && |
| + m_visualRect == m_visualRectInPreviousLayoutBlock) { |
|
chrishtr
2017/03/10 05:06:07
Why is this conditional required? Can't figure thi
|
| m_previousLayoutBlock = nullptr; |
| + m_visualRectInPreviousLayoutBlock = LayoutRect(); |
| + } |
| ObjectPaintInvalidatorWithContext objectInvalidator(*m_layoutBlock, context); |
| if (!m_needsPaintInvalidation && newVisualRect == m_visualRect) { |