RESOLVED FIXED Bug 33643
Window size changes are not propagated down the render tree
https://bugs.webkit.org/show_bug.cgi?id=33643
Summary Window size changes are not propagated down the render tree
Nikolas Zimmermann
Reported 2010-01-13 17:29:05 PST
Amazing that we have a bug like this, anyhow, we don't react on window size changes at the moment -- if you use any percentual values in a svg document, the RenderSVGRoot object does not propagate these children correctly. For example: <svg xmlns="..."><rect width="50%" height="50%"/></svg> Resize Safari -> no reaction. As layout tests use a fixed window size, we can only create a testcase which puts svg content in a <div> within a compound document and resize that box - it suffers from the same bug.
Attachments
Initial patch (46.18 KB, patch)
2010-01-13 18:33 PST, Nikolas Zimmermann
oliver: review+
Nikolas Zimmermann
Comment 1 2010-01-13 18:33:15 PST
Created attachment 46533 [details] Initial patch <use> content still won't react to size changes, due its design - will be fixed in a follow up patch. It's already done, just submitting in chunks, to avoid a monster patch :-)
Eric Seidel (no email)
Comment 2 2010-01-13 18:51:52 PST
Comment on attachment 46533 [details] Initial patch I seem to remember Darin saying that marking things for layout during layout was bad? 258 if (needsLayout) 259 child->setNeedsLayout(true, false);
WebKit Review Bot
Comment 3 2010-01-13 18:58:31 PST
Nikolas Zimmermann
Comment 4 2010-01-13 19:00:24 PST
(In reply to comment #2) > (From update of attachment 46533 [details]) > I seem to remember Darin saying that marking things for layout during layout > was bad? Huh? Please reread the patch, it's the regular flow of a renderer containing children to layout them - this patch mimics RenderBlock behaviour for SVG (see layoutBlockChildren + relayoutChildren). Furthermore it's just refactoring existing code while cleaning up some things, that lead to unneeded relayout and/or missing layouts for relative-sized kids. If you trace the code starting from RenderSVGRoot, you'll see that window size changes (induced by WebKit -> FrameView::layout(), only cause a setChildNeedsLayout(true) call on the RenderSVGRoot object, at least for standalone svg documents) - so comparing to RenderBlock behaviour we have to take care of relayouting relative sized kids ourselves. Hope that clarifies it a bit.
Oliver Hunt
Comment 5 2010-01-13 19:01:54 PST
Comment on attachment 46533 [details] Initial patch r=me
Nikolas Zimmermann
Comment 6 2010-01-13 19:06:28 PST
Landed in r53229.
Note You need to log in before you can comment on or make changes to this bug.