Index: Source/core/rendering/svg/RenderSVGRoot.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGRoot.cpp b/Source/core/rendering/svg/RenderSVGRoot.cpp |
index 6d554622faaed5e156de2f4ac828c7b9af446eee..4ab0b148f8964cabeebaa5aa7feb94cb4c292a46 100644 |
--- a/Source/core/rendering/svg/RenderSVGRoot.cpp |
+++ b/Source/core/rendering/svg/RenderSVGRoot.cpp |
@@ -422,9 +422,10 @@ bool RenderSVGRoot::nodeAtPoint(const HitTestRequest& request, HitTestResult& re |
LayoutPoint pointInParent = locationInContainer.point() - toLayoutSize(accumulatedOffset); |
LayoutPoint pointInBorderBox = pointInParent - toLayoutSize(location()); |
- // Only test SVG content if the point is in our content box. |
+ // Only test SVG content if the point is in our content box, or in case we |
+ // don't clip to the viewport, the visual overflow rect. |
// FIXME: This should be an intersection when rect-based hit tests are supported by nodeAtFloatPoint. |
- if (contentBoxRect().contains(pointInBorderBox)) { |
+ if (contentBoxRect().contains(pointInBorderBox) || (!shouldApplyViewportClip() && visualOverflowRect().contains(pointInBorderBox))) { |
const AffineTransform& localToParentTransform = this->localToParentTransform(); |
if (localToParentTransform.isInvertible()) { |
FloatPoint localPoint = localToParentTransform.inverse().mapPoint(FloatPoint(pointInParent)); |