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+

Description Joost de Valk (AlthA) 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.
Comment 1 Joost de Valk (AlthA) 2006-07-06 04:49:37 PDT
Created attachment 9224 [details]
testcase
Comment 2 Eric Seidel (no email) 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.
Comment 3 Eric Seidel (no email) 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.
Comment 4 Eric Seidel (no email) 2007-06-01 16:09:29 PDT
This is probably at least related to bug 5940
Comment 5 Rob Buis 2007-06-14 10:35:56 PDT
Created attachment 15025 [details]
First attempt

This should do it:)
Cheers,

Rob.
Comment 6 Eric Seidel (no email) 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...
Comment 7 Rob Buis 2007-06-16 23:31:06 PDT
Landed in r 23530.