mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 579258. Remove the 'before move' region parameter to ComputeVisibility. r=tnikkel,a=joe
This commit is contained in:
parent
b004c93cb1
commit
0b542b46ed
@ -70,7 +70,6 @@ using namespace mozilla::layers;
|
||||
nsDisplayListBuilder::nsDisplayListBuilder(nsIFrame* aReferenceFrame,
|
||||
PRBool aIsForEvents, PRBool aBuildCaret)
|
||||
: mReferenceFrame(aReferenceFrame),
|
||||
mMovingFrame(nsnull),
|
||||
mIgnoreScrollFrame(nsnull),
|
||||
mCurrentTableItem(nsnull),
|
||||
mBuildCaret(aBuildCaret),
|
||||
@ -179,13 +178,6 @@ nsDisplayListBuilder::SubtractFromVisibleRegion(nsRegion* aVisibleRegion,
|
||||
}
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDisplayListBuilder::IsMovingFrame(nsIFrame* aFrame)
|
||||
{
|
||||
return mMovingFrame &&
|
||||
nsLayoutUtils::IsAncestorFrameCrossDoc(mMovingFrame, aFrame, mReferenceFrame);
|
||||
}
|
||||
|
||||
nsCaret *
|
||||
nsDisplayListBuilder::GetCaret() {
|
||||
nsRefPtr<nsCaret> caret = CurrentPresShellState()->mPresShell->GetCaret();
|
||||
@ -296,10 +288,7 @@ nsDisplayList::GetBounds(nsDisplayListBuilder* aBuilder) const {
|
||||
|
||||
PRBool
|
||||
nsDisplayList::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "Not supported anymore");
|
||||
|
||||
nsRegion* aVisibleRegion) {
|
||||
mVisibleRect = aVisibleRegion->GetBounds();
|
||||
PRBool anyVisible = PR_FALSE;
|
||||
|
||||
@ -322,7 +311,7 @@ nsDisplayList::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
itemVisible.And(*aVisibleRegion, bounds);
|
||||
item->mVisibleRect = itemVisible.GetBounds();
|
||||
|
||||
if (item->ComputeVisibility(aBuilder, aVisibleRegion, aVisibleRegionBeforeMove)) {
|
||||
if (item->ComputeVisibility(aBuilder, aVisibleRegion)) {
|
||||
anyVisible = PR_TRUE;
|
||||
nsIFrame* f = item->GetUnderlyingFrame();
|
||||
if (item->IsOpaque(aBuilder) && f) {
|
||||
@ -592,7 +581,7 @@ PRBool nsDisplayItem::RecomputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
itemVisible.And(*aVisibleRegion, bounds);
|
||||
mVisibleRect = itemVisible.GetBounds();
|
||||
|
||||
if (!ComputeVisibility(aBuilder, aVisibleRegion, nsnull))
|
||||
if (!ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
if (IsOpaque(aBuilder)) {
|
||||
@ -682,11 +671,9 @@ static PRBool RoundedRectContainsRect(const nsRect& aRoundedRect,
|
||||
|
||||
PRBool
|
||||
nsDisplayBackground::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove)
|
||||
nsRegion* aVisibleRegion)
|
||||
{
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove))
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
// Return false if the background was propagated away from this
|
||||
@ -859,19 +846,13 @@ nsDisplayOutline::Paint(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
PRBool
|
||||
nsDisplayOutline::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove))
|
||||
nsRegion* aVisibleRegion) {
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
const nsStyleOutline* outline = mFrame->GetStyleOutline();
|
||||
nsRect borderBox(aBuilder->ToReferenceFrame(mFrame), mFrame->GetSize());
|
||||
if (borderBox.Contains(aVisibleRegion->GetBounds()) &&
|
||||
(!aVisibleRegionBeforeMove ||
|
||||
borderBox.Contains(aVisibleRegionBeforeMove->GetBounds())) &&
|
||||
!nsLayoutUtils::HasNonZeroCorner(outline->mOutlineRadius)) {
|
||||
if (outline->mOutlineOffset >= 0) {
|
||||
// the visible region is entirely inside the border-rect, and the outline
|
||||
@ -893,20 +874,14 @@ nsDisplayCaret::Paint(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
PRBool
|
||||
nsDisplayBorder::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove))
|
||||
nsRegion* aVisibleRegion) {
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
nsRect paddingRect = mFrame->GetPaddingRect() - mFrame->GetPosition() +
|
||||
aBuilder->ToReferenceFrame(mFrame);
|
||||
const nsStyleBorder *styleBorder;
|
||||
if (paddingRect.Contains(aVisibleRegion->GetBounds()) &&
|
||||
(!aVisibleRegionBeforeMove ||
|
||||
paddingRect.Contains(aVisibleRegionBeforeMove->GetBounds())) &&
|
||||
!(styleBorder = mFrame->GetStyleBorder())->IsBorderImageLoaded() &&
|
||||
!nsLayoutUtils::HasNonZeroCorner(styleBorder->mBorderRadius)) {
|
||||
// the visible region is entirely inside the content rect, and no part
|
||||
@ -988,12 +963,8 @@ nsDisplayBoxShadowOuter::GetBounds(nsDisplayListBuilder* aBuilder) {
|
||||
|
||||
PRBool
|
||||
nsDisplayBoxShadowOuter::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove))
|
||||
nsRegion* aVisibleRegion) {
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
// Store the actual visible region
|
||||
@ -1001,9 +972,6 @@ nsDisplayBoxShadowOuter::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
nsPoint origin = aBuilder->ToReferenceFrame(mFrame);
|
||||
nsRect visibleBounds = aVisibleRegion->GetBounds();
|
||||
if (aVisibleRegionBeforeMove) {
|
||||
visibleBounds.UnionRect(visibleBounds, aVisibleRegionBeforeMove->GetBounds());
|
||||
}
|
||||
nsRect frameRect(origin, mFrame->GetSize());
|
||||
if (!frameRect.Contains(visibleBounds))
|
||||
return PR_TRUE;
|
||||
@ -1041,12 +1009,8 @@ nsDisplayBoxShadowInner::Paint(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
PRBool
|
||||
nsDisplayBoxShadowInner::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove))
|
||||
nsRegion* aVisibleRegion) {
|
||||
if (!nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion))
|
||||
return PR_FALSE;
|
||||
|
||||
// Store the actual visible region
|
||||
@ -1081,9 +1045,8 @@ nsDisplayWrapList::GetBounds(nsDisplayListBuilder* aBuilder) {
|
||||
|
||||
PRBool
|
||||
nsDisplayWrapList::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
return mList.ComputeVisibility(aBuilder, aVisibleRegion, aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion) {
|
||||
return mList.ComputeVisibility(aBuilder, aVisibleRegion);
|
||||
}
|
||||
|
||||
PRBool
|
||||
@ -1138,7 +1101,7 @@ PRBool nsDisplayWrapList::ChildrenCanBeInactive(nsDisplayListBuilder* aBuilder,
|
||||
static nsresult
|
||||
WrapDisplayList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
|
||||
nsDisplayList* aList, nsDisplayWrapper* aWrapper) {
|
||||
if (!aList->GetTop() && !aBuilder->HasMovingFrames())
|
||||
if (!aList->GetTop())
|
||||
return NS_OK;
|
||||
nsDisplayItem* item = aWrapper->WrapList(aBuilder, aFrame, aList);
|
||||
if (!item)
|
||||
@ -1248,10 +1211,7 @@ nsDisplayOpacity::GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
PRBool nsDisplayOpacity::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
nsRegion* aVisibleRegion) {
|
||||
// Our children are translucent so we should not allow them to subtract
|
||||
// area from aVisibleRegion. We do need to find out what is visible under
|
||||
// our children in the temporary compositing buffer, because if our children
|
||||
@ -1260,13 +1220,8 @@ PRBool nsDisplayOpacity::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRect bounds = GetBounds(aBuilder);
|
||||
nsRegion visibleUnderChildren;
|
||||
visibleUnderChildren.And(*aVisibleRegion, bounds);
|
||||
nsRegion visibleUnderChildrenBeforeMove;
|
||||
if (aVisibleRegionBeforeMove) {
|
||||
visibleUnderChildrenBeforeMove.And(*aVisibleRegionBeforeMove, bounds);
|
||||
}
|
||||
return
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleUnderChildren,
|
||||
aVisibleRegionBeforeMove ? &visibleUnderChildrenBeforeMove : nsnull);
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleUnderChildren);
|
||||
}
|
||||
|
||||
PRBool nsDisplayOpacity::TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) {
|
||||
@ -1333,19 +1288,13 @@ void nsDisplayClip::Paint(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
PRBool nsDisplayClip::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
nsRegion* aVisibleRegion) {
|
||||
nsRegion clipped;
|
||||
clipped.And(*aVisibleRegion, mClip);
|
||||
nsRegion clippedBeforeMove;
|
||||
|
||||
nsRegion finalClipped(clipped);
|
||||
nsRegion finalClippedBeforeMove(clippedBeforeMove);
|
||||
PRBool anyVisible =
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &finalClipped,
|
||||
aVisibleRegionBeforeMove ? &finalClippedBeforeMove : nsnull);
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &finalClipped);
|
||||
|
||||
nsRegion removed;
|
||||
removed.Sub(clipped, finalClipped);
|
||||
@ -1413,23 +1362,15 @@ void nsDisplayZoom::Paint(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
PRBool nsDisplayZoom::ComputeVisibility(nsDisplayListBuilder *aBuilder,
|
||||
nsRegion *aVisibleRegion,
|
||||
nsRegion *aVisibleRegionBeforeMove)
|
||||
nsRegion *aVisibleRegion)
|
||||
{
|
||||
NS_ASSERTION((aVisibleRegionBeforeMove != nsnull) ==
|
||||
aBuilder->HasMovingFrames(),
|
||||
"Should have aVisibleRegionBeforeMove when there are moving "
|
||||
"frames");
|
||||
NS_ASSERTION(aVisibleRegionBeforeMove == nsnull,
|
||||
"we don't support scroll analysis with zoom");
|
||||
|
||||
// Convert the passed in visible region to our appunits.
|
||||
nsRegion visibleRegion =
|
||||
aVisibleRegion->ConvertAppUnitsRoundOut(mParentAPD, mAPD);
|
||||
nsRegion originalVisibleRegion = visibleRegion;
|
||||
|
||||
PRBool retval =
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleRegion, nsnull);
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &visibleRegion);
|
||||
|
||||
nsRegion removed;
|
||||
// removed = originalVisibleRegion - visibleRegion
|
||||
@ -1621,27 +1562,15 @@ nsDisplayTransform::GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
PRBool nsDisplayTransform::ComputeVisibility(nsDisplayListBuilder *aBuilder,
|
||||
nsRegion *aVisibleRegion,
|
||||
nsRegion *aVisibleRegionBeforeMove)
|
||||
nsRegion *aVisibleRegion)
|
||||
{
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
/* As we do this, we need to be sure to
|
||||
* untransform the visible rect, since we want everything that's painting to
|
||||
* think that it's painting in its original rectangular coordinate space. */
|
||||
nsRegion untransformedVisible =
|
||||
UntransformRect(mVisibleRect, mFrame, aBuilder->ToReferenceFrame(mFrame));
|
||||
|
||||
nsRegion untransformedVisibleBeforeMove;
|
||||
if (aVisibleRegionBeforeMove) {
|
||||
// mVisibleRect contains areas visible before and after the move, so it's
|
||||
// OK (although conservative) to just use the same regions here.
|
||||
untransformedVisibleBeforeMove = untransformedVisible;
|
||||
}
|
||||
mStoredList.ComputeVisibility(aBuilder, &untransformedVisible,
|
||||
aVisibleRegionBeforeMove
|
||||
? &untransformedVisibleBeforeMove
|
||||
: nsnull);
|
||||
mStoredList.ComputeVisibility(aBuilder, &untransformedVisible);
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
@ -1888,10 +1817,7 @@ void nsDisplaySVGEffects::Paint(nsDisplayListBuilder* aBuilder,
|
||||
}
|
||||
|
||||
PRBool nsDisplaySVGEffects::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove) {
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
nsRegion* aVisibleRegion) {
|
||||
nsPoint offset = aBuilder->ToReferenceFrame(mEffectsFrame);
|
||||
nsRect dirtyRect =
|
||||
nsSVGIntegrationUtils::GetRequiredSourceForInvalidArea(mEffectsFrame,
|
||||
@ -1901,11 +1827,7 @@ PRBool nsDisplaySVGEffects::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
// Our children may be made translucent or arbitrarily deformed so we should
|
||||
// not allow them to subtract area from aVisibleRegion.
|
||||
nsRegion childrenVisible(dirtyRect);
|
||||
// mVisibleRect contains areas visible before and after the move, so it's
|
||||
// OK (although conservative) to just use the same regions here.
|
||||
nsRegion childrenVisibleBeforeMove(dirtyRect);
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &childrenVisible,
|
||||
aVisibleRegionBeforeMove ? &childrenVisibleBeforeMove : nsnull);
|
||||
nsDisplayWrapList::ComputeVisibility(aBuilder, &childrenVisible);
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -163,35 +163,6 @@ public:
|
||||
*/
|
||||
PRBool IsAtRootOfPseudoStackingContext() { return mIsAtRootOfPseudoStackingContext; }
|
||||
|
||||
/**
|
||||
* Indicate that we'll use this display list to analyze the effects
|
||||
* of aMovingFrame moving by aMoveDelta. The move has already been
|
||||
* applied to the frame tree. Moving frames are not allowed to clip or
|
||||
* cover (during ComputeVisibility) non-moving frames. E.g. when we're
|
||||
* constructing a display list to see what should be repainted during a
|
||||
* scroll operation, we specify the scrolled frame as the moving frame.
|
||||
* @param aSaveVisibleRegionOfMovingContent if non-null,
|
||||
* this receives a bounding region for the visible moving content
|
||||
* (considering the moving content both before and after the move)
|
||||
*/
|
||||
void SetMovingFrame(nsIFrame* aMovingFrame) {
|
||||
mMovingFrame = aMovingFrame;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return PR_TRUE if we are doing analysis of moving frames
|
||||
*/
|
||||
PRBool HasMovingFrames() { return mMovingFrame != nsnull; }
|
||||
/**
|
||||
* @return the frame that was moved
|
||||
*/
|
||||
nsIFrame* GetRootMovingFrame() { return mMovingFrame; }
|
||||
|
||||
/**
|
||||
* @return PR_TRUE if aFrame is, or is a descendant of, the hypothetical
|
||||
* moving frame
|
||||
*/
|
||||
PRBool IsMovingFrame(nsIFrame* aFrame);
|
||||
/**
|
||||
* @return the selection that painting should be restricted to (or nsnull
|
||||
* in the normal unrestricted case)
|
||||
@ -406,7 +377,6 @@ private:
|
||||
|
||||
FrameLayerBuilder mLayerBuilder;
|
||||
nsIFrame* mReferenceFrame;
|
||||
nsIFrame* mMovingFrame;
|
||||
nsIFrame* mIgnoreScrollFrame;
|
||||
PLArenaPool mPool;
|
||||
nsCOMPtr<nsISelection> mBoundingSelection;
|
||||
@ -605,10 +575,6 @@ public:
|
||||
* On entry, aVisibleRegion contains the region (relative to ReferenceFrame())
|
||||
* which may be visible. If the display item opaquely covers an area, it
|
||||
* can remove that area from aVisibleRegion before returning.
|
||||
* If we're doing scroll analysis with moving frames, then
|
||||
* aVisibleRegionBeforeMove will be non-null and contains the region that
|
||||
* would have been visible before the move. aVisibleRegion contains the
|
||||
* region that is visible after the move.
|
||||
* nsDisplayList::ComputeVisibility automatically subtracts the bounds
|
||||
* of items that return true from IsOpaque(), and automatically
|
||||
* removes items whose bounds do not intersect the visible area,
|
||||
@ -622,8 +588,7 @@ public:
|
||||
* is visible
|
||||
*/
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove)
|
||||
nsRegion* aVisibleRegion)
|
||||
{ return !mVisibleRect.IsEmpty(); }
|
||||
|
||||
/**
|
||||
@ -873,8 +838,7 @@ public:
|
||||
* @return true if any item in the list is visible
|
||||
*/
|
||||
PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
/**
|
||||
* Returns true if the visible region output from ComputeVisiblity was
|
||||
* empty, i.e. everything visible in this list is opaque.
|
||||
@ -1239,8 +1203,7 @@ public:
|
||||
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
NS_DISPLAY_DECL_NAME("Border", TYPE_BORDER)
|
||||
};
|
||||
|
||||
@ -1306,8 +1269,7 @@ public:
|
||||
aOutFrames->AppendElement(mFrame);
|
||||
}
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
virtual PRBool IsOpaque(nsDisplayListBuilder* aBuilder);
|
||||
virtual PRBool IsVaryingRelativeToMovingFrame(nsDisplayListBuilder* aBuilder,
|
||||
nsIFrame* aFrame);
|
||||
@ -1339,8 +1301,7 @@ public:
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
NS_DISPLAY_DECL_NAME("BoxShadowOuter", TYPE_BOX_SHADOW_OUTER)
|
||||
|
||||
private:
|
||||
@ -1363,8 +1324,7 @@ public:
|
||||
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
NS_DISPLAY_DECL_NAME("BoxShadowInner", TYPE_BOX_SHADOW_INNER)
|
||||
|
||||
private:
|
||||
@ -1388,8 +1348,7 @@ public:
|
||||
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder);
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
NS_DISPLAY_DECL_NAME("Outline", TYPE_OUTLINE)
|
||||
};
|
||||
|
||||
@ -1449,8 +1408,7 @@ public:
|
||||
nsIFrame* aFrame);
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
virtual PRBool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem) {
|
||||
NS_WARNING("This list should already have been flattened!!!");
|
||||
return PR_FALSE;
|
||||
@ -1530,8 +1488,7 @@ public:
|
||||
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
virtual PRBool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem);
|
||||
NS_DISPLAY_DECL_NAME("Opacity", TYPE_OPACITY)
|
||||
};
|
||||
@ -1585,8 +1542,7 @@ public:
|
||||
virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder);
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
virtual PRBool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem);
|
||||
NS_DISPLAY_DECL_NAME("Clip", TYPE_CLIP)
|
||||
virtual PRUint32 GetPerFrameKey() { return 0; }
|
||||
@ -1631,8 +1587,7 @@ public:
|
||||
virtual void HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
|
||||
HitTestState* aState, nsTArray<nsIFrame*> *aOutFrames);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
NS_DISPLAY_DECL_NAME("Zoom", TYPE_ZOOM)
|
||||
|
||||
// Get the app units per dev pixel ratio of the child document.
|
||||
@ -1664,8 +1619,7 @@ public:
|
||||
}
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder, nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
virtual PRBool TryMerge(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem);
|
||||
NS_DISPLAY_DECL_NAME("SVGEffects", TYPE_SVG_EFFECTS)
|
||||
|
||||
@ -1719,8 +1673,7 @@ public:
|
||||
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
|
||||
LayerManager* aManager);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder *aBuilder,
|
||||
nsRegion *aVisibleRegion,
|
||||
nsRegion *aVisibleRegionBeforeMove);
|
||||
nsRegion *aVisibleRegion);
|
||||
virtual PRBool TryMerge(nsDisplayListBuilder *aBuilder, nsDisplayItem *aItem);
|
||||
|
||||
/**
|
||||
|
@ -1355,7 +1355,7 @@ nsLayoutUtils::PaintFrame(nsIRenderingContext* aRenderingContext, nsIFrame* aFra
|
||||
}
|
||||
#endif
|
||||
|
||||
list.ComputeVisibility(&builder, &visibleRegion, nsnull);
|
||||
list.ComputeVisibility(&builder, &visibleRegion);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (gDumpPaintList) {
|
||||
|
@ -2538,7 +2538,7 @@ nsRootPresContext::GetPluginGeometryUpdates(nsIFrame* aChangedSubtree,
|
||||
#endif
|
||||
|
||||
nsRegion visibleRegion(bounds);
|
||||
list.ComputeVisibility(&builder, &visibleRegion, nsnull);
|
||||
list.ComputeVisibility(&builder, &visibleRegion);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (gDumpPluginList) {
|
||||
|
@ -5635,7 +5635,7 @@ PresShell::PaintRangePaintInfo(nsTArray<nsAutoPtr<RangePaintInfo> >* aItems,
|
||||
|
||||
aArea.MoveBy(-rangeInfo->mRootOffset.x, -rangeInfo->mRootOffset.y);
|
||||
nsRegion visible(aArea);
|
||||
rangeInfo->mList.ComputeVisibility(&rangeInfo->mBuilder, &visible, nsnull);
|
||||
rangeInfo->mList.ComputeVisibility(&rangeInfo->mBuilder, &visible);
|
||||
rangeInfo->mList.PaintRoot(&rangeInfo->mBuilder, rc, nsDisplayList::PAINT_DEFAULT);
|
||||
aArea.MoveBy(rangeInfo->mRootOffset.x, rangeInfo->mRootOffset.y);
|
||||
}
|
||||
|
@ -172,12 +172,10 @@ public:
|
||||
}
|
||||
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove)
|
||||
nsRegion* aVisibleRegion)
|
||||
{
|
||||
return NS_GET_A(mExtraBackgroundColor) > 0 ||
|
||||
nsDisplayBackground::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove);
|
||||
nsDisplayBackground::ComputeVisibility(aBuilder, aVisibleRegion);
|
||||
}
|
||||
virtual PRBool IsOpaque(nsDisplayListBuilder* aBuilder)
|
||||
{
|
||||
|
@ -1058,23 +1058,7 @@ static PRBool ApplyAbsPosClipping(nsDisplayListBuilder* aBuilder,
|
||||
if (!aFrame->GetAbsPosClipRect(aDisp, aRect, aFrame->GetSize()))
|
||||
return PR_FALSE;
|
||||
|
||||
// A moving frame should not be allowed to clip a non-moving frame.
|
||||
// Abs-pos clipping always clips frames below it in the frame tree, except
|
||||
// for when an abs-pos frame clips a fixed-pos frame. So when fixed-pos
|
||||
// elements are present we do not allow a moving abs-pos frame with
|
||||
// an out-of-flow descendant (which could be a fixed frame) child to clip
|
||||
// anything. It's OK to not clip anything, even the moving children ...
|
||||
// all that could happen is that we get unnecessarily conservative results
|
||||
// for nsLayoutUtils::ComputeRepaintRegionForCopy ... but this is a rare
|
||||
// situation.
|
||||
if (aBuilder->HasMovingFrames() &&
|
||||
aFrame->PresContext()->FrameManager()->GetRootFrame()->
|
||||
GetFirstChild(nsGkAtoms::fixedList) &&
|
||||
aBuilder->IsMovingFrame(aFrame))
|
||||
return PR_FALSE;
|
||||
|
||||
*aRect += aBuilder->ToReferenceFrame(aFrame);
|
||||
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1568,7 +1568,7 @@ InvalidateFixedBackgroundFrames(nsIFrame* aRootFrame,
|
||||
return;
|
||||
|
||||
nsRegion visibleRegion(aUpdateRect);
|
||||
list.ComputeVisibility(&builder, &visibleRegion, nsnull);
|
||||
list.ComputeVisibility(&builder, &visibleRegion);
|
||||
|
||||
InvalidateFixedBackgroundFramesFromList(&builder, aMovingFrame, list);
|
||||
list.DeleteAll();
|
||||
|
@ -1189,14 +1189,10 @@ nsDisplayPlugin::Paint(nsDisplayListBuilder* aBuilder,
|
||||
|
||||
PRBool
|
||||
nsDisplayPlugin::ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove)
|
||||
nsRegion* aVisibleRegion)
|
||||
{
|
||||
NS_ASSERTION(!aVisibleRegionBeforeMove, "not supported anymore");
|
||||
|
||||
mVisibleRegion.And(*aVisibleRegion, GetBounds(aBuilder));
|
||||
return nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion,
|
||||
aVisibleRegionBeforeMove);
|
||||
return nsDisplayItem::ComputeVisibility(aBuilder, aVisibleRegion);
|
||||
}
|
||||
|
||||
PRBool
|
||||
|
@ -280,8 +280,7 @@ public:
|
||||
virtual void Paint(nsDisplayListBuilder* aBuilder,
|
||||
nsIRenderingContext* aCtx);
|
||||
virtual PRBool ComputeVisibility(nsDisplayListBuilder* aBuilder,
|
||||
nsRegion* aVisibleRegion,
|
||||
nsRegion* aVisibleRegionBeforeMove);
|
||||
nsRegion* aVisibleRegion);
|
||||
|
||||
NS_DISPLAY_DECL_NAME("Plugin", TYPE_PLUGIN)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user