Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Unified Diff: Source/core/rendering/svg/RenderSVGPath.cpp

Issue 810343003: Fix pointer-events:all when stroke="none" (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Remove line uniting m_hitTestStrokeBoundingBox with markerRect Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/svg/RenderSVGPath.h ('k') | Source/core/rendering/svg/RenderSVGRect.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/svg/RenderSVGPath.cpp
diff --git a/Source/core/rendering/svg/RenderSVGPath.cpp b/Source/core/rendering/svg/RenderSVGPath.cpp
index a6344ec8aeae9892b7eb8c974b7cec8464798d1b..a1ddf125512693e7e7f798073e7a4ae94c090060 100644
--- a/Source/core/rendering/svg/RenderSVGPath.cpp
+++ b/Source/core/rendering/svg/RenderSVGPath.cpp
@@ -49,24 +49,26 @@ RenderSVGPath::~RenderSVGPath()
void RenderSVGPath::updateShapeFromElement()
{
RenderSVGShape::updateShapeFromElement();
+
updateZeroLengthSubpaths();
+ m_hitTestStrokeBoundingBox = calculateUpdatedHitTestStrokeBoundingBox();
+
+ m_strokeBoundingBox = style()->svgStyle().hasStroke() ? m_hitTestStrokeBoundingBox : m_fillBoundingBox;
- m_strokeBoundingBox = calculateUpdatedStrokeBoundingBox();
+ if (!m_markerPositions.isEmpty()) {
+ const FloatRect markerRect = this->markerRect(strokeWidth());
+ m_strokeBoundingBox.unite(markerRect);
+ }
}
-FloatRect RenderSVGPath::calculateUpdatedStrokeBoundingBox() const
+FloatRect RenderSVGPath::calculateUpdatedHitTestStrokeBoundingBox() const
{
- FloatRect strokeBoundingBox = m_strokeBoundingBox;
+ FloatRect strokeBoundingBox = m_hitTestStrokeBoundingBox;
- if (!m_markerPositions.isEmpty())
- strokeBoundingBox.unite(markerRect(strokeWidth()));
-
- if (style()->svgStyle().hasStroke()) {
- // FIXME: zero-length subpaths do not respect vector-effect = non-scaling-stroke.
- float strokeWidth = this->strokeWidth();
- for (size_t i = 0; i < m_zeroLengthLinecapLocations.size(); ++i)
- strokeBoundingBox.unite(zeroLengthSubpathRect(m_zeroLengthLinecapLocations[i], strokeWidth));
- }
+ // FIXME: zero-length subpaths do not respect vector-effect = non-scaling-stroke.
+ const float strokeWidth = this->strokeWidth();
+ for (size_t i = 0; i < m_zeroLengthLinecapLocations.size(); ++i)
+ strokeBoundingBox.unite(zeroLengthSubpathRect(m_zeroLengthLinecapLocations[i], strokeWidth));
return strokeBoundingBox;
}
@@ -77,9 +79,9 @@ bool RenderSVGPath::shapeDependentStrokeContains(const FloatPoint& point)
return true;
const SVGRenderStyle& svgStyle = style()->svgStyle();
+ const float strokeWidth = this->strokeWidth();
for (size_t i = 0; i < m_zeroLengthLinecapLocations.size(); ++i) {
ASSERT(svgStyle.hasStroke());
- float strokeWidth = this->strokeWidth();
if (svgStyle.capStyle() == SquareCap) {
if (zeroLengthSubpathRect(m_zeroLengthLinecapLocations[i], strokeWidth).contains(point))
return true;
« no previous file with comments | « Source/core/rendering/svg/RenderSVGPath.h ('k') | Source/core/rendering/svg/RenderSVGRect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698