Index: Source/core/rendering/RenderBlock.cpp |
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp |
index f535ada36d9386c241ee0a911d7a57fa61946066..ae05a0eb0b75a55462c63c3be1302c25249ae75a 100644 |
--- a/Source/core/rendering/RenderBlock.cpp |
+++ b/Source/core/rendering/RenderBlock.cpp |
@@ -7340,6 +7340,22 @@ void RenderBlock::addFocusRingRects(Vector<IntRect>& rects, const LayoutPoint& a |
inlineElementContinuation()->addFocusRingRects(rects, flooredLayoutPoint(additionalOffset + inlineElementContinuation()->containingBlock()->location() - location()), paintContainer); |
} |
+void RenderBlock::computeSelfHitTestRects(Vector<LayoutRect>& rects, const LayoutPoint& layerOffset) const |
+{ |
+ RenderBox::computeSelfHitTestRects(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()); |
+ LayoutRect rect(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()) |