зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1059498 - Use the inner dirty rect when initializing the visible rect of display items inside the SVG filter stacking context. r=roc
This commit is contained in:
Родитель
0193598bf5
Коммит
8f22177f6f
|
@ -1959,9 +1959,14 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
|||
inTransform = true;
|
||||
}
|
||||
|
||||
bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this);
|
||||
if (usingSVGEffects) {
|
||||
dirtyRect =
|
||||
nsSVGIntegrationUtils::GetRequiredSourceForInvalidArea(this, dirtyRect);
|
||||
}
|
||||
|
||||
bool useOpacity = HasVisualOpacity() && !nsSVGUtils::CanOptimizeOpacity(this);
|
||||
bool useBlendMode = disp->mMixBlendMode != NS_STYLE_BLEND_NORMAL;
|
||||
bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this);
|
||||
bool useStickyPosition = disp->mPosition == NS_STYLE_POSITION_STICKY &&
|
||||
IsScrollFrameActive(nsLayoutUtils::GetNearestScrollableFrame(GetParent(),
|
||||
nsLayoutUtils::SCROLLABLE_SAME_DOC |
|
||||
|
@ -1987,11 +1992,6 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder,
|
|||
inTransformSetter(aBuilder, inTransform);
|
||||
CheckForTouchEventHandler(aBuilder, this);
|
||||
|
||||
if (usingSVGEffects) {
|
||||
dirtyRect =
|
||||
nsSVGIntegrationUtils::GetRequiredSourceForInvalidArea(this, dirtyRect);
|
||||
}
|
||||
|
||||
nsRect clipPropClip;
|
||||
if (ApplyClipPropClipping(aBuilder, this, disp, &clipPropClip,
|
||||
nestedClipState)) {
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 1059498 - Paint parts of the filter that are caused by parts of the source that are invisible</title>
|
||||
|
||||
<style>
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#result {
|
||||
width: 100px;
|
||||
height: 30px;
|
||||
background-color: lime;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="result"></div>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<meta charset="utf-8">
|
||||
<title>Test for bug 1059498 - Paint parts of the filter that are caused by parts of the source that are invisible</title>
|
||||
|
||||
<style>
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#filtered {
|
||||
margin-top: -110px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: white;
|
||||
filter: url(#filter);
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div id="filtered"></div>
|
||||
|
||||
<svg height="0">
|
||||
<defs>
|
||||
<filter id="filter" filterUnits="objectBoundingBox"
|
||||
x="0%" y="0%" width="100%" height="200%"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feDropShadow stdDeviation="0" dx="0" dy="40" flood-color="lime"/>
|
||||
</filter>
|
||||
</defs>
|
||||
</svg>
|
|
@ -1830,3 +1830,4 @@ pref(browser.display.use_document_fonts,0) == 1022481-1.html 1022481-1-ref.html
|
|||
== 1053035-1-flex.html 1053035-1-ref.html
|
||||
test-pref(layout.css.grid.enabled,true) == 1053035-1-grid.html 1053035-1-ref.html
|
||||
== 1059167-1.html 1059167-1-ref.html
|
||||
== 1059498-1.html 1059498-1-ref.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче