Closed Bug 1519073 Opened 7 years ago Closed 4 years ago

Sticky positioning with transform between it and reference box is not scrolled properly

Categories

(Core :: Panning and Zooming, defect, P3)

defect

Tracking

()

RESOLVED FIXED

People

(Reporter: Oriol, Assigned: emilio)

References

Details

Attachments

(4 files, 1 obsolete file)

Attached file testcase.htm

Open the attached testcase, it contains a sticky positioned elements inside a scroll container. The quirk is that there is a transformed element between them.

Scroll the container.

The sticky element moves discretely and buggy in Firefox.

It should probably move smoothly from right to left, like in Chromium.

Also see https://github.com/w3c/csswg-drafts/issues/3186

Attached image screencast-firefox.gif

This is what I see in Firefox

Attached image screencast-chrome.gif

This is what I see in Chromium

This seems to work fine in WebRender (you can check toggling gfx.webrender.all to true on Firefox Nightly).

So this is most likely an async-scrolling / APZ bug.

Component: Layout: Positioned → Panning and Zooming

We should probably add a test to avoid regressing this in WR.

Ya I mentioned WebRender fixing this in the initial csswg filing. At least when I run it on mac.

(In reply to Emilio Cobos Álvarez (:emilio) from comment #4)

We should probably add a test to avoid regressing this in WR.

Aside form adding the test, there is a tangential way to cause the bug even with WebRender enabled, where the perspective property set to a non-auto value for the transformation will have it's painting bugged mid scroll.

http://jsfiddle.net/gmwnLqkj/

Should I file that separately or is it encapsulated here? Possibly just how transforms/perspectives behave with stacking contexts in gecko?

Well, or an attempt at it. Running it with webrender enabled still fails because we clip the bottom of the scroller on the test screenshot. I cannot reproduce it when I scroll replacing overflow-y: hidden by overflow-y: scroll, so there's something fishy there, but it might be that I'm doing something wrong with the reftest harness (I don't know what the displayport-{w,h} values are supposed to be really). Kats / Botond, any chance you could take a look to see where I messed up?

(In reply to jonjohnjohnson from comment #6)

Aside form adding the test, there is a tangential way to cause the bug even with WebRender enabled, where the perspective property set to a non-auto value for the transformation will have it's painting bugged mid scroll.

http://jsfiddle.net/gmwnLqkj/

Should I file that separately or is it encapsulated here? Possibly just how transforms/perspectives behave with stacking contexts in gecko?

I suspect that's bug 1498639.

We could also instead, maybe, force isolation when we have a stacking context with blurs or such, and remove this clip altogether... That might be cleaner actually. In any case this works.
Attachment #9035661 - Attachment is obsolete: true
Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/22fefdbe40ee Add a reftest to avoid regressing this in webrender. r=kats,botond
Keywords: leave-open

The leave-open keyword is there and there is no activity for 6 months.
:botond, maybe it's time to close this bug?

Flags: needinfo?(botond)

We don't want to close it, as the patch that has landed is just a test, not a fix.

But we can remove the leave-open keyword.

Flags: needinfo?(botond)
Keywords: leave-open
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Assignee: nobody → emilio
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: