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

Reply via email to