The slow codepaths for fixed background-attachment should only apply when there's a background image. b=258793 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@162195 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
068c8b28b1
commit
bbe291225f
@ -187,6 +187,14 @@ struct nsStyleBackground : public nsStyleStruct {
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE)) ==
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE);
|
||||
}
|
||||
|
||||
PRBool HasFixedBackground() const
|
||||
{
|
||||
// We have to take slower codepaths for fixed background attachment,
|
||||
// but we don't want to do that when there's no image.
|
||||
return mBackgroundAttachment == NS_STYLE_BG_ATTACHMENT_FIXED &&
|
||||
mBackgroundImage;
|
||||
}
|
||||
};
|
||||
|
||||
#define BORDER_COLOR_DEFINED 0x80
|
||||
|
||||
@ -572,8 +572,7 @@ SyncFrameViewGeometryDependentProperties(nsPresContext* aPresContext,
|
||||
|
||||
// background-attachment: fixed is not really geometry dependent, but
|
||||
// we set it here because it's cheap to do so
|
||||
PRBool fixedBackground = hasBG &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment;
|
||||
PRBool fixedBackground = hasBG && bg->HasFixedBackground();
|
||||
// If the frame has a fixed background attachment, then indicate that the
|
||||
// view's contents should be repainted and not bitblt'd
|
||||
vm->SetViewBitBltEnabled(aView, !fixedBackground);
|
||||
@ -901,8 +900,7 @@ nsContainerFrame::FrameNeedsView(nsIFrame* aFrame)
|
||||
PRBool hasBackground =
|
||||
nsCSSRendering::FindBackground(aFrame->GetPresContext(),
|
||||
aFrame, &color, &isCanvas);
|
||||
if (hasBackground &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == color->mBackgroundAttachment) {
|
||||
if (hasBackground && color->HasFixedBackground()) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -572,8 +572,7 @@ SyncFrameViewGeometryDependentProperties(nsPresContext* aPresContext,
|
||||
|
||||
// background-attachment: fixed is not really geometry dependent, but
|
||||
// we set it here because it's cheap to do so
|
||||
PRBool fixedBackground = hasBG &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment;
|
||||
PRBool fixedBackground = hasBG && bg->HasFixedBackground();
|
||||
// If the frame has a fixed background attachment, then indicate that the
|
||||
// view's contents should be repainted and not bitblt'd
|
||||
vm->SetViewBitBltEnabled(aView, !fixedBackground);
|
||||
@ -901,8 +900,7 @@ nsContainerFrame::FrameNeedsView(nsIFrame* aFrame)
|
||||
PRBool hasBackground =
|
||||
nsCSSRendering::FindBackground(aFrame->GetPresContext(),
|
||||
aFrame, &color, &isCanvas);
|
||||
if (hasBackground &&
|
||||
NS_STYLE_BG_ATTACHMENT_FIXED == color->mBackgroundAttachment) {
|
||||
if (hasBackground && color->HasFixedBackground()) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -187,6 +187,14 @@ struct nsStyleBackground : public nsStyleStruct {
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE)) ==
|
||||
(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE);
|
||||
}
|
||||
|
||||
PRBool HasFixedBackground() const
|
||||
{
|
||||
// We have to take slower codepaths for fixed background attachment,
|
||||
// but we don't want to do that when there's no image.
|
||||
return mBackgroundAttachment == NS_STYLE_BG_ATTACHMENT_FIXED &&
|
||||
mBackgroundImage;
|
||||
}
|
||||
};
|
||||
|
||||
#define BORDER_COLOR_DEFINED 0x80
|
||||
|
||||
@ -2490,7 +2490,7 @@ nsBoxFrame::CreateViewForFrame(nsPresContext* aPresContext,
|
||||
}
|
||||
|
||||
// See if the frame has a fixed background attachment
|
||||
if (hasBG && NS_STYLE_BG_ATTACHMENT_FIXED == bg->mBackgroundAttachment) {
|
||||
if (hasBG && bg->HasFixedBackground()) {
|
||||
aForce = PR_TRUE;
|
||||
fixedBackgroundAttachment = PR_TRUE;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user