Index: third_party/WebKit/Source/core/paint/BlockPaintInvalidator.cpp |
diff --git a/third_party/WebKit/Source/core/paint/BlockPaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/BlockPaintInvalidator.cpp |
index b64c32efdcfffe4881adadce03d35816fc869609..a7db1ebc07582f9155c043387afdb4ca3b9cccfa 100644 |
--- a/third_party/WebKit/Source/core/paint/BlockPaintInvalidator.cpp |
+++ b/third_party/WebKit/Source/core/paint/BlockPaintInvalidator.cpp |
@@ -4,23 +4,32 @@ |
#include "core/paint/BlockPaintInvalidator.h" |
+#include "core/editing/DragCaret.h" |
#include "core/editing/FrameSelection.h" |
#include "core/frame/LocalFrame.h" |
#include "core/layout/LayoutBlock.h" |
+#include "core/page/Page.h" |
#include "core/paint/BoxPaintInvalidator.h" |
+#include "core/paint/ObjectPaintInvalidator.h" |
#include "core/paint/PaintInvalidator.h" |
namespace blink { |
-PaintInvalidationReason BlockPaintInvalidator::invalidatePaintIfNeeded() { |
+void BlockPaintInvalidator::clearPreviousVisualRects() { |
+ m_block.frame()->selection().clearPreviousCaretVisualRect(m_block); |
+ m_block.frame()->page()->dragCaret().clearPreviousVisualRect(m_block); |
+} |
+ |
+PaintInvalidationReason BlockPaintInvalidator::invalidatePaintIfNeeded( |
+ const PaintInvalidatorContext& context) { |
PaintInvalidationReason reason = |
- BoxPaintInvalidator(m_block, m_context).invalidatePaintIfNeeded(); |
+ BoxPaintInvalidator(m_block, context).invalidatePaintIfNeeded(); |
+ |
+ m_block.frame()->selection().invalidatePaintIfNeeded(m_block, context, |
+ reason); |
+ m_block.frame()->page()->dragCaret().invalidatePaintIfNeeded(m_block, context, |
+ reason); |
- if (reason != PaintInvalidationNone && m_block.hasCaret()) { |
- FrameSelection& selection = m_block.frame()->selection(); |
- selection.setCaretRectNeedsUpdate(); |
- selection.invalidateCaretRect(true); |
- } |
return reason; |
} |
} |