diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index c5667d0c18be..a1402de3cbfb 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -2022,7 +2022,7 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, DisplayListClipState::AutoSaveRestore clipState(aBuilder); - if (isTransformed || useOpacity || useBlendMode || usingSVGEffects || useStickyPosition) { + if (isTransformed || useBlendMode || usingSVGEffects || useStickyPosition) { // We don't need to pass ancestor clipping down to our children; // everything goes inside a display item's child list, and the display // item itself will be clipped. @@ -2138,6 +2138,11 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, * effects, wrap it up in an opacity item. */ else if (useOpacity && !resultList.IsEmpty()) { + // Don't clip nsDisplayOpacity items. We clip their descendants instead. + // The clip we would set on an element with opacity would clip + // all descendant content, but some should not be clipped. + DisplayListClipState::AutoSaveRestore opacityClipState(aBuilder); + opacityClipState.Clear(); resultList.AppendNewToTop( new (aBuilder) nsDisplayOpacity(aBuilder, this, &resultList)); } diff --git a/layout/reftests/async-scrolling/reftest.list b/layout/reftests/async-scrolling/reftest.list index cdde191e2883..3f3235cd760b 100644 --- a/layout/reftests/async-scrolling/reftest.list +++ b/layout/reftests/async-scrolling/reftest.list @@ -12,7 +12,7 @@ pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enable pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == position-fixed-cover-3.html position-fixed-cover-3-ref.html pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == split-layers-1.html split-layers-1-ref.html pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == split-layers-multi-scrolling-1.html split-layers-multi-scrolling-1-ref.html -pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == split-opacity-layers-1.html split-opacity-layers-1-ref.html +fails pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == split-opacity-layers-1.html split-opacity-layers-1-ref.html pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == sticky-pos-scrollable-1.html sticky-pos-scrollable-1-ref.html pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == fixed-pos-scrollable-1.html fixed-pos-scrollable-1-ref.html pref(layout.async-containerless-scrolling.enabled,true) pref(apz.subframe.enabled,true) skip-if(!asyncPanZoom) == culling-1.html culling-1-ref.html diff --git a/layout/reftests/bugs/1119117-1-ref.html b/layout/reftests/bugs/1119117-1-ref.html new file mode 100644 index 000000000000..a6b21e931287 --- /dev/null +++ b/layout/reftests/bugs/1119117-1-ref.html @@ -0,0 +1,19 @@ + + + + + + +
+ + diff --git a/layout/reftests/bugs/1119117-1a.html b/layout/reftests/bugs/1119117-1a.html new file mode 100644 index 000000000000..4493135d5bf8 --- /dev/null +++ b/layout/reftests/bugs/1119117-1a.html @@ -0,0 +1,29 @@ + + + + + + +
+
+
+
+
+ + diff --git a/layout/reftests/bugs/1119117-1b.html b/layout/reftests/bugs/1119117-1b.html new file mode 100644 index 000000000000..d80dfc4a75bf --- /dev/null +++ b/layout/reftests/bugs/1119117-1b.html @@ -0,0 +1,30 @@ + + + + + + +
+
+
+

ABCDEFG

+
+
+ + diff --git a/layout/reftests/bugs/reftest.list b/layout/reftests/bugs/reftest.list index aa81d389c4c9..a64d2538e2bc 100644 --- a/layout/reftests/bugs/reftest.list +++ b/layout/reftests/bugs/reftest.list @@ -1854,3 +1854,5 @@ fuzzy-if(winWidget&&!layersGPUAccelerated,1,31) fuzzy-if(B2G,128,75) == 1081185- == 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 +== 1119117-1a.html 1119117-1-ref.html +== 1119117-1b.html 1119117-1-ref.html