I'm trying to get back to fixing these bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=459144 https://bugzilla.mozilla.org/show_bug.cgi?id=485501 relating to clipping the rounded borders of elements with 'overflow' != 'visible' and of replaced elements when border-radius is set. (These are the remaining blockers for unprefixing border-radius.)
Pre-layers, it seemed relatively obvious to me how to fix these: set the path in the thebes context to a rounded rect and clip to it (in the 'overflow' case, using a display item that wraps the contents). Now that we have layers, it doesn't seem this straightforward. I recognize that I'd need the wrapping display item in more cases (for the replaced elements that have layers: canvas and video). But it also seems that nsDisplayClip works differently; we now accumulate clip rects in ContainerState::ProcessDisplayItems, and I think layers only support a single clip rect. However, it seems like I ought to be able to make things work the same way SVG effects work; they (in nsSVGIntegrationUtils::PaintFramesWithEffects) paint their display list to a thebes context. (Presumably that still works even if there are child layers inside that list?) This seems slow, though, but it also seems like it's probably ok if some of these edge cases are slow. Is this the right approach, or should I be doing something else? (I know I discussed this with roc a while back, but I didn't have a chance to write down what he said.) -David -- L. David Baron http://dbaron.org/ Mozilla Corporation http://www.mozilla.com/ _______________________________________________ dev-tech-layout mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-layout

