зеркало из https://github.com/mozilla/gecko-dev.git
Bug 769645 - Use nsDisplayClip to do the content box clipping for nsSVGOuterSVGFrame. r=roc.
This commit is contained in:
Родитель
7e3dc288c5
Коммит
be9eb94c50
|
@ -505,7 +505,6 @@ nsDisplayOuterSVG::Paint(nsDisplayListBuilder* aBuilder,
|
|||
ToOutsidePixels(mFrame->PresContext()->AppUnitsPerDevPixel());
|
||||
|
||||
aContext->PushState();
|
||||
aContext->IntersectClip(clipRect);
|
||||
aContext->Translate(viewportRect.TopLeft());
|
||||
nsSVGUtils::PaintFrameWithEffects(aContext, &contentAreaDirtyRect, mFrame);
|
||||
aContext->PopState();
|
||||
|
@ -595,13 +594,23 @@ nsSVGOuterSVGFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
|||
nsresult rv = DisplayBorderBackgroundOutline(aBuilder, aLists);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsDisplayList replacedContent;
|
||||
nsDisplayList childItems;
|
||||
|
||||
rv = replacedContent.AppendNewToTop(
|
||||
new (aBuilder) nsDisplayOuterSVG(aBuilder, this));
|
||||
rv = childItems.AppendNewToTop(
|
||||
new (aBuilder) nsDisplayOuterSVG(aBuilder, this));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
WrapReplacedContentForBorderRadius(aBuilder, &replacedContent, aLists);
|
||||
if (GetStyleDisplay()->IsScrollableOverflow()) {
|
||||
// Clip to our _content_ box:
|
||||
nsRect clipRect =
|
||||
GetContentRectRelativeToSelf() + aBuilder->ToReferenceFrame(this);
|
||||
nsDisplayClip* item =
|
||||
new (aBuilder) nsDisplayClip(aBuilder, this, &childItems, clipRect);
|
||||
rv = childItems.AppendNewToTop(item);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
WrapReplacedContentForBorderRadius(aBuilder, &childItems, aLists);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ switch {
|
|||
-moz-binding: none !important;
|
||||
}
|
||||
|
||||
svg:not(:root), symbol, image, marker, pattern, foreignObject {
|
||||
svg, symbol, image, marker, pattern, foreignObject {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче