Bug 9752

Summary: %-sizing of elements with a html parent is broken
Product: WebKit Reporter: Joost de Valk (AlthA) <joost>
Component: SVGAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal Keywords: HasReduction
Priority: P2    
Version: 420+   
Hardware: Mac   
OS: OS X 10.4   
Bug Depends on: 12207    
Bug Blocks:    
Attachments:
Description Flags
testcase
none
First attempt eric: review+

Joost de Valk (AlthA)
Reported 2006-07-06 04:49:09 PDT
Following bug 9555, i encountered another bug: when an svg element has a size in percentages, and the parent is a html element, it doesn't draw at all. Adding simple testcase in a sec.
Attachments
testcase (268 bytes, application/xml)
2006-07-06 04:49 PDT, Joost de Valk (AlthA)
no flags
First attempt (23.50 KB, patch)
2007-06-14 10:35 PDT, Rob Buis
eric: review+
Joost de Valk (AlthA)
Comment 1 2006-07-06 04:49:37 PDT
Created attachment 9224 [details] testcase
Eric Seidel (no email)
Comment 2 2006-09-12 23:19:55 PDT
Hum... shouldn't be hard to fix. Looking at the RenderTree debug window, it seems the <svg> is correctly sized to 200x200, but the item inside it is not. I expect this has to do with SVG doing all of its layout in the DOM tree instead of the render tree.
Eric Seidel (no email)
Comment 3 2007-01-31 05:03:57 PST
The function which would need to change is: float SVGLength::PercentageOfViewport(float value, const SVGStyledElement* context, SVGLengthMode mode) } else if (viewportElement && viewportElement->isSVG()) { const SVGSVGElement* svg = static_cast<const SVGSVGElement*>(viewportElement); if (svg->hasAttribute(SVGNames::viewBoxAttr)) { width = svg->viewBox().width(); height = svg->viewBox().height(); } else { width = svg->width().value(); height = svg->height().value(); } } Possibly that if should just check to see if the <svg> has a renderer() and if it does, use that width/height. Seems a little hacky however. Really SVG length resolution just needs to move entirely into the rendering tree.
Eric Seidel (no email)
Comment 4 2007-06-01 16:09:29 PDT
This is probably at least related to bug 5940
Rob Buis
Comment 5 2007-06-14 10:35:56 PDT
Created attachment 15025 [details] First attempt This should do it:) Cheers, Rob.
Eric Seidel (no email)
Comment 6 2007-06-14 10:54:37 PDT
Comment on attachment 15025 [details] First attempt This looks fine. Since the change is in SVGLength, I wonder if now things like <div><svg:circle></div> will draw...
Rob Buis
Comment 7 2007-06-16 23:31:06 PDT
Landed in r 23530.
Note You need to log in before you can comment on or make changes to this bug.