mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1067748. When a solid-color display item covers everything else in its layer, make it a ColorLayer. r=tn
--HG-- extra : rebase_source : e0fdaddfd24c59531ffef865b46f948ba203acaa
This commit is contained in:
parent
891ff40ca8
commit
9b4d6f2a19
@ -2349,7 +2349,11 @@ ThebesLayerData::Accumulate(ContainerState* aState,
|
|||||||
bool clipMatches = mItemClip == aClip;
|
bool clipMatches = mItemClip == aClip;
|
||||||
mItemClip = aClip;
|
mItemClip = aClip;
|
||||||
|
|
||||||
if (!mIsSolidColorInVisibleRegion && mOpaqueRegion.Contains(aDrawRect) &&
|
nscolor uniformColor;
|
||||||
|
bool isUniform = aItem->IsUniform(aState->mBuilder, &uniformColor);
|
||||||
|
|
||||||
|
if (!mIsSolidColorInVisibleRegion && !isUniform &&
|
||||||
|
mOpaqueRegion.Contains(aDrawRect) &&
|
||||||
mVisibleRegion.Contains(aVisibleRect)) {
|
mVisibleRegion.Contains(aVisibleRect)) {
|
||||||
// A very common case! Most pages have a ThebesLayer with the page
|
// A very common case! Most pages have a ThebesLayer with the page
|
||||||
// background (opaque) visible and most or all of the page content over the
|
// background (opaque) visible and most or all of the page content over the
|
||||||
@ -2363,9 +2367,6 @@ ThebesLayerData::Accumulate(ContainerState* aState,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nscolor uniformColor;
|
|
||||||
bool isUniform = aItem->IsUniform(aState->mBuilder, &uniformColor);
|
|
||||||
|
|
||||||
// Some display items have to exist (so they can set forceTransparentSurface
|
// Some display items have to exist (so they can set forceTransparentSurface
|
||||||
// below) but don't draw anything. They'll return true for isUniform but
|
// below) but don't draw anything. They'll return true for isUniform but
|
||||||
// a color with opacity 0.
|
// a color with opacity 0.
|
||||||
@ -2386,6 +2387,11 @@ ThebesLayerData::Accumulate(ContainerState* aState,
|
|||||||
// This color is all we have
|
// This color is all we have
|
||||||
mSolidColor = uniformColor;
|
mSolidColor = uniformColor;
|
||||||
mIsSolidColorInVisibleRegion = true;
|
mIsSolidColorInVisibleRegion = true;
|
||||||
|
} else if (NS_GET_A(uniformColor) == 255 &&
|
||||||
|
aVisibleRect.Contains(mVisibleRegion.GetBounds())) {
|
||||||
|
// This color covers everything else in the layer
|
||||||
|
mSolidColor = uniformColor;
|
||||||
|
mIsSolidColorInVisibleRegion = true;
|
||||||
} else if (mIsSolidColorInVisibleRegion &&
|
} else if (mIsSolidColorInVisibleRegion &&
|
||||||
mVisibleRegion.IsEqual(nsIntRegion(aVisibleRect)) &&
|
mVisibleRegion.IsEqual(nsIntRegion(aVisibleRect)) &&
|
||||||
clipMatches) {
|
clipMatches) {
|
||||||
|
Loading…
Reference in New Issue
Block a user