| Index: Source/core/rendering/RenderBlock.cpp
|
| diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
|
| index fbcc31eb3c1ddbed2c55e49fdf3f75103d6adc04..e79aefec024523a44bc9e535eaa2b7e4ee4650ff 100644
|
| --- a/Source/core/rendering/RenderBlock.cpp
|
| +++ b/Source/core/rendering/RenderBlock.cpp
|
| @@ -2882,7 +2882,18 @@ bool RenderBlock::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
|
| // If we have clipping, then we can't have any spillout.
|
| bool useOverflowClip = hasOverflowClip() && !hasSelfPaintingLayer();
|
| bool useClip = (hasControlClip() || useOverflowClip);
|
| - bool checkChildren = !useClip || (hasControlClip() ? locationInContainer.intersects(controlClipRect(adjustedLocation)) : locationInContainer.intersects(overflowClipRect(adjustedLocation, IncludeOverlayScrollbarSize)));
|
| + bool checkChildren = !useClip;
|
| + if (!checkChildren) {
|
| + if (hasControlClip()) {
|
| + checkChildren = locationInContainer.intersects(controlClipRect(adjustedLocation));
|
| + } else {
|
| + LayoutRect clipRect = overflowClipRect(adjustedLocation, IncludeOverlayScrollbarSize);
|
| + if (style()->hasBorderRadius())
|
| + checkChildren = locationInContainer.intersects(style()->getRoundedBorderFor(clipRect));
|
| + else
|
| + checkChildren = locationInContainer.intersects(clipRect);
|
| + }
|
| + }
|
| if (checkChildren) {
|
| // Hit test descendants first.
|
| LayoutSize scrolledOffset(localOffset);
|
| @@ -2904,7 +2915,7 @@ bool RenderBlock::nodeAtPoint(const HitTestRequest& request, HitTestResult& resu
|
| }
|
|
|
| // Check if the point is outside radii.
|
| - if (!isRenderView() && style()->hasBorderRadius()) {
|
| + if (style()->hasBorderRadius()) {
|
| LayoutRect borderRect = borderBoxRect();
|
| borderRect.moveBy(adjustedLocation);
|
| RoundedRect border = style()->getRoundedBorderFor(borderRect);
|
|
|