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

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 braces from single-line if statement Created 5 years, 12 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
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..1d462436f1778f69c0afcf2e8576a0bb5ea9fa7f 100644
--- a/Source/core/rendering/svg/RenderSVGPath.cpp
+++ b/Source/core/rendering/svg/RenderSVGPath.cpp
@@ -49,8 +49,15 @@ RenderSVGPath::~RenderSVGPath()
void RenderSVGPath::updateShapeFromElement()
{
RenderSVGShape::updateShapeFromElement();
- updateZeroLengthSubpaths();
+ if (m_markerPositions.isEmpty()) {
+ m_markerRect = FloatRect();
+ } else {
+ m_markerRect = markerRect(strokeWidth());
+ m_strokeBoundingBox.unite(m_markerRect);
+ }
+
+ updateZeroLengthSubpaths();
m_strokeBoundingBox = calculateUpdatedStrokeBoundingBox();
}
@@ -58,15 +65,10 @@ FloatRect RenderSVGPath::calculateUpdatedStrokeBoundingBox() const
{
FloatRect strokeBoundingBox = m_strokeBoundingBox;
- 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;
@@ -93,6 +95,16 @@ bool RenderSVGPath::shapeDependentStrokeContains(const FloatPoint& point)
return false;
}
+FloatRect RenderSVGPath::actualStrokeBoundingBox() const
+{
+ if (style()->svgStyle().hasStroke())
+ return m_strokeBoundingBox;
+
+ FloatRect actualStrokeBoundingBox = m_fillBoundingBox;
+ actualStrokeBoundingBox.unite(m_markerRect);
+ return actualStrokeBoundingBox;
+}
+
bool RenderSVGPath::shouldStrokeZeroLengthSubpath() const
{
// Spec(11.4): Any zero length subpath shall not be stroked if the "stroke-linecap" property has a value of butt

Powered by Google App Engine
This is Rietveld 408576698