author | Matt Woodrow <mwoodrow@mozilla.com> |
Wed, 28 Nov 2012 17:05:32 +1300 | |
changeset 114328 | 3edb5bb92461d20787e0454124a33fadc70f149b |
parent 114327 | 8f83993bd9023c96928e89b8182da491c999ac51 |
child 114329 | 8fda5071806a9229a1f56934a1857ec35e3c6875 |
push id | 23913 |
push user | emorley@mozilla.com |
push date | Wed, 28 Nov 2012 17:11:31 +0000 |
treeherder | mozilla-central@17c267a881cf [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | roc |
bugs | 814272 |
milestone | 20.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
layout/base/nsDisplayList.cpp | file | annotate | diff | comparison | revisions | |
layout/base/nsDisplayList.h | file | annotate | diff | comparison | revisions |
--- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -1525,16 +1525,18 @@ nsDisplayBackgroundImage::nsDisplayBackg } // Check if this background layer is attachment-fixed if (!mBackgroundStyle->mLayers[mLayer].mImage.IsEmpty() && mBackgroundStyle->mLayers[mLayer].mAttachment == NS_STYLE_BG_ATTACHMENT_FIXED) { aBuilder->SetHasFixedItems(); } } + + mBounds = GetBoundsInternal(); } nsDisplayBackgroundImage::~nsDisplayBackgroundImage() { #ifdef NS_BUILD_REFCNT_LOGGING MOZ_COUNT_DTOR(nsDisplayBackgroundImage); #endif } @@ -2092,16 +2094,21 @@ void nsDisplayBackgroundImage::ComputeIn // painting area. aInvalidRegion->Xor(bounds, geometry->mBounds); } } nsRect nsDisplayBackgroundImage::GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) { *aSnap = true; + return mBounds; +} + +nsRect +nsDisplayBackgroundImage::GetBoundsInternal() { nsPresContext* presContext = mFrame->PresContext(); if (mIsThemed) { nsRect r(nsPoint(0,0), mFrame->GetSize()); presContext->GetTheme()-> GetWidgetOverflow(presContext->DeviceContext(), mFrame, mFrame->GetStyleDisplay()->mAppearance, &r); #ifdef XP_MACOSX
--- a/layout/base/nsDisplayList.h +++ b/layout/base/nsDisplayList.h @@ -1894,23 +1894,26 @@ public: protected: typedef class mozilla::layers::ImageContainer ImageContainer; typedef class mozilla::layers::ImageLayer ImageLayer; bool TryOptimizeToImageLayer(nsDisplayListBuilder* aBuilder); bool IsSingleFixedPositionImage(nsDisplayListBuilder* aBuilder, const nsRect& aClipRect, gfxRect* aDestRect); + nsRect GetBoundsInternal(); // Cache the result of nsCSSRendering::FindBackground. Always null if // mIsThemed is true or if FindBackground returned false. const nsStyleBackground* mBackgroundStyle; /* If this background can be a simple image layer, we store the format here. */ nsRefPtr<ImageContainer> mImageContainer; gfxRect mDestRect; + /* Bounds of this display item */ + nsRect mBounds; uint32_t mLayer; nsITheme::Transparency mThemeTransparency; /* Used to cache mFrame->IsThemed() since it isn't a cheap call */ bool mIsThemed; /* true if this item represents the bottom-most background layer */ bool mIsBottommostLayer; };