Index: Source/core/rendering/svg/RenderSVGText.cpp |
diff --git a/Source/core/rendering/svg/RenderSVGText.cpp b/Source/core/rendering/svg/RenderSVGText.cpp |
index e9f50f71c5358dc6b5a7bfbd165b5cfd33da9eff..8bfd5020576b7f94d5c4321da0803049481d4bb2 100644 |
--- a/Source/core/rendering/svg/RenderSVGText.cpp |
+++ b/Source/core/rendering/svg/RenderSVGText.cpp |
@@ -442,12 +442,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); |