Index: Source/core/rendering/RenderLayer.cpp |
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
index 7f7c72fa218bc69f6565bb0e58aa426f1bb3ca60..5a8846ce4a37fbbc3859fa95f85ebacdb56d134f 100644 |
--- a/Source/core/rendering/RenderLayer.cpp |
+++ b/Source/core/rendering/RenderLayer.cpp |
@@ -3216,9 +3216,27 @@ RenderLayer* RenderLayer::hitTestChildLayerColumns(RenderLayer* childLayer, Rend |
return 0; |
} |
+RenderLayer::PresenceOfBlockSelectionGaps RenderLayer::rendererHasBlockSelectionGaps() |
+{ |
+ if (!renderer()->isRenderBlock()) |
+ return LayerDoesNotHaveBlockSelectionGaps; |
+ |
+ RenderBlock* renderBlock = toRenderBlock(renderer()); |
+ LayoutRect gapRects = renderBlock->selectionGapRectsForRepaint(renderBlock); |
+ |
+ return gapRects.isEmpty() ? LayerDoesNotHaveBlockSelectionGaps : LayerHasBlockSelectionGaps; |
+} |
+ |
+void RenderLayer::blockSelectionGapsBoundsChanged() |
+{ |
+ if (needsCompositedScrolling() && hasCompositedLayerMapping()) |
+ m_compositedLayerMapping->updateScrollingContentsForSelectionGaps(); |
+} |
+ |
void RenderLayer::addBlockSelectionGapsBounds(const LayoutRect& bounds) |
{ |
m_blockSelectionGapsBounds.unite(enclosingIntRect(bounds)); |
+ blockSelectionGapsBoundsChanged(); |
} |
void RenderLayer::clearBlockSelectionGapsBounds() |
@@ -3226,6 +3244,7 @@ void RenderLayer::clearBlockSelectionGapsBounds() |
m_blockSelectionGapsBounds = IntRect(); |
for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) |
child->clearBlockSelectionGapsBounds(); |
+ blockSelectionGapsBoundsChanged(); |
} |
void RenderLayer::repaintBlockSelectionGaps() |