Index: Source/core/rendering/RenderBlock.cpp |
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp |
index 099addac65bfce31beee43509f747b5abd9a2d7c..8f1ce8f832da72ce236efa768240673bae9aef75 100644 |
--- a/Source/core/rendering/RenderBlock.cpp |
+++ b/Source/core/rendering/RenderBlock.cpp |
@@ -7219,6 +7219,22 @@ void RenderBlock::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint& a |
inlineElementContinuation()->addFocusRingRects(rects, flooredLayoutPoint(additionalOffset + inlineElementContinuation()->containingBlock()->location() - location()), paintContainer); |
} |
+void RenderBlock::computeOwnHitTestRects(Vector<IntRect>& rects, const LayoutPoint& layerOffset) const |
+{ |
+ RenderBox::computeOwnHitTestRects(rects, layerOffset); |
+ |
+ if (hasHorizontalLayoutOverflow() || hasVerticalLayoutOverflow()) { |
+ for (RootInlineBox* curr = firstRootBox(); curr; curr = curr->nextRootBox()) { |
+ LayoutUnit top = max<LayoutUnit>(curr->lineTop(), curr->top()); |
+ LayoutUnit bottom = min<LayoutUnit>(curr->lineBottom(), curr->top() + curr->height()); |
+ IntRect rect(pixelSnappedIntRect(layerOffset.x() + curr->x(), layerOffset.y() + top, curr->width(), bottom - top)); |
+ // It's common for this rect to be entirely contained in our box, so exclude that simple case. |
+ if (!rect.isEmpty() && (rects.isEmpty() || !rects[0].contains(rect))) |
+ rects.append(rect); |
+ } |
+ } |
+} |
+ |
RenderBox* RenderBlock::createAnonymousBoxWithSameTypeAs(const RenderObject* parent) const |
{ |
if (isAnonymousColumnsBlock()) |