Index: Source/core/rendering/svg/RenderSVGText.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGText.cpp b/Source/core/rendering/svg/RenderSVGText.cpp |
index 3503fa1bb8a67154c949d8f934a307c58070a307..2f259d964818867057f01f3d7d0c911623539dd6 100644 |
--- a/Source/core/rendering/svg/RenderSVGText.cpp |
+++ b/Source/core/rendering/svg/RenderSVGText.cpp |
@@ -443,12 +443,15 @@ bool RenderSVGText::nodeAtFloatPoint(const HitTestRequest& request, HitTestResul |
PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_TEXT_HITTESTING, request, style()->pointerEvents()); |
bool isVisible = (style()->visibility() == VISIBLE); |
if (isVisible || !hitRules.requireVisible) { |
- if ((hitRules.canHitStroke && (style()->svgStyle()->hasStroke() || !hitRules.requireStroke)) |
+ if ((hitRules.canHitBoundingBox && !objectBoundingBox().isEmpty()) |
+ || (hitRules.canHitStroke && (style()->svgStyle()->hasStroke() || !hitRules.requireStroke)) |
|| (hitRules.canHitFill && (style()->svgStyle()->hasFill() || !hitRules.requireFill))) { |
FloatPoint localPoint = localToParentTransform().inverse().mapPoint(pointInParent); |
if (!SVGRenderSupport::pointInClippingArea(this, localPoint)) |
return false; |
+ if (hitRules.canHitBoundingBox && !objectBoundingBox().contains(localPoint)) |
+ return false; |
HitTestLocation hitTestLocation(LayoutPoint(flooredIntPoint(localPoint))); |
return RenderBlock::nodeAtPoint(request, result, hitTestLocation, LayoutPoint(), hitTestAction); |