| Summary: | REGRESSION (r285885): Angular virtual scrollers no longer work (because of contain:strict) | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Kevin <kkelchen> | ||||||
| Component: | Scrolling | Assignee: | Rob Buis <rbuis> | ||||||
| Status: | RESOLVED FIXED | ||||||||
| Severity: | Critical | CC: | bfulgham, cathiechen, changseok, clopez, esprehn+autocc, ews-watchlist, glenn, kondapallykalyan, nicolas.ramz, pdr, rbuis, simon.fraser, webkit-bug-importer, youennf, zalan | ||||||
| Priority: | P2 | Keywords: | InRadar | ||||||
| Version: | Safari Technology Preview | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Attachments: |
|
||||||||
|
Description
Kevin
2022-02-07 14:02:03 PST
I'm not seeing an edit button (sorry, this is my first time submitting a Bugzilla/WebKit issue 😅) but I wanted to add a big THANK YOU for taking the time to consider looking into this issue! Take care, Kevin It looks like the `contain: strict` breaks scrolling on Webkit (but not other browsers). Confirmed that turning off CSS Containment fixes this. Wow--thanks for being so amazingly responsive! 😀 I know that's not some kind of guarantee of a fix but I at least sure do appreciate someone looking at this so soon! ❤️ Does the problem go away for subsets of contain: size layout paint? Maybe we can pinpoint if the problem is due to one particular kind of containment. It doesn't reproduce in a simple testcase. Might be something about dynamic content size changes. Created attachment 451160 [details]
Reduction
Test case. Scrolled content has to be position:absolute to show the bug.
My guess is that this is about layout overflow computation. Wow! Thank you for creating a far simpler reproduction sample, Simon! 😀 I had tried to fiddle a little with some of the CSS of the Angular virtual scroll example in effort to pinpoint what contributes to the issue but was unsuccessful. 😅 I'm glad you were able to do so! Thank you!! This must have regressed at https://trac.webkit.org/changeset/285885/webkit as this code below does not look correct: void RenderBox::addOverflowFromChild(const RenderBox* child, const LayoutSize& delta) { if (paintContainmentApplies()) return; ... paint containment should not prevent collecting scrollable overflow (only ink overflow) Created attachment 451254 [details]
Patch
This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess Thank you so much for working on a fix, Rob! 😀 (In reply to Kevin from comment #16) > Thank you so much for working on a fix, Rob! 😀 No problemo! Was my mistake, so a fix was in order :) Committed r289443 (246991@main): <https://commits.webkit.org/246991@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 451254 [details]. Is the fix included in Safari 15.4 that was just released or do we have to wait for a bug fix release? This should be fixed in 15.4, yes. |