# HG changeset patch # User Robert O'Callahan # Date 1419217772 -46800 # Mon Dec 22 16:09:32 2014 +1300 # Node ID 2057ac9b035e6b746b80da4ece1867b48d265eb9 # Parent b30f55f7f94cf1c3f1be50e90d90c9fa79c2145c Bug 1111753. Don't restrict the dirty rect stored for display items for out-of-flow elements to their visual overflow areas. r=tn diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h --- a/layout/base/nsDisplayList.h +++ b/layout/base/nsDisplayList.h @@ -2688,16 +2688,24 @@ public: } virtual ~nsDisplayWrapList(); /** * Call this if the wrapped list is changed. */ virtual void UpdateBounds(nsDisplayListBuilder* aBuilder) MOZ_OVERRIDE { mBounds = mList.GetBounds(aBuilder); + // The display list may contain content that's visible outside the visible + // rect (i.e. the current dirty rect) passed in when the item was created. + // This happens when the dirty rect has been restricted to the visual + // overflow rect of a frame for some reason (e.g. when setting up dirty + // rects in nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay), but that + // frame contains placeholders for out-of-flows that aren't descendants of + // the frame. + mVisibleRect = mList.GetVisibleRect(); } virtual void HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect, HitTestState* aState, nsTArray *aOutFrames) MOZ_OVERRIDE; virtual nsRect GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap) MOZ_OVERRIDE; virtual nsRegion GetOpaqueRegion(nsDisplayListBuilder* aBuilder, bool* aSnap) MOZ_OVERRIDE; virtual bool IsUniform(nsDisplayListBuilder* aBuilder, nscolor* aColor) MOZ_OVERRIDE; virtual void Paint(nsDisplayListBuilder* aBuilder, nsRenderingContext* aCtx) MOZ_OVERRIDE; diff --git a/layout/reftests/bugs/1111753-1.html b/layout/reftests/bugs/1111753-1.html new file mode 100644 --- /dev/null +++ b/layout/reftests/bugs/1111753-1.html @@ -0,0 +1,38 @@ + + + + + + +
+
+

ABCDEFG

+
+ + + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -1847,8 +1847,9 @@ test-pref(dom.webcomponents.enabled,true == 1069716-1.html 1069716-1-ref.html == 1078262-1.html about:blank test-pref(layout.testing.overlay-scrollbars.always-visible,false) == 1081072-1.html 1081072-1-ref.html fuzzy-if(winWidget&&!layersGPUAccelerated,1,31) fuzzy-if(B2G,128,75) == 1081185-1.html 1081185-1-ref.html # fuzzy with event-regions, see bug 1107843 == 1097437-1.html 1097437-1-ref.html == 1103258-1.html 1103258-1-ref.html # assertion crash test with layers culling test == 1105137-1.html 1105137-1-ref.html fuzzy-if(d2d,36,304) HTTP(..) == 1116480-1-fakeitalic-overflow.html 1116480-1-fakeitalic-overflow-ref.html +== 1111753-1.html about:blank