Implicit Root Scroller can prevent scrolling of ancestor scrollers
Reported by
h...@jonjohnjohnson.com,
Apr 25 2018
|
||||||
Issue descriptionUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3404.0 Safari/537.36 Steps to reproduce the problem: 1. Go to testcase -> http://output.jsbin.com/gedurer/11 2. Try scrolling horizontally, no scrolling happens. 3. Open inspector and toggle 'position:fixed' property declaration for the '.pager' selector. 4. Horizontal scrolling is enabled. What is the expected behavior? Because '.pager' element has a scrollWidth that is larger than its clientWidth and its 'overflow' is set to 'auto'/'scroll', it should be user scrollable. What went wrong? User cannot scroll on initial layout of spec compliant scrollable element. Did this work before? Yes My other chrome 65. Does this work in other browsers? Yes Chrome version: 68.0.3404.0 Channel: canary OS Version: OS X 10.12.6 Flash Version: Created from comments here -> https://bugs.chromium.org/p/chromium/issues/detail?id=825544
,
Apr 26 2018
,
Apr 26 2018
,
Nov 13
Hey bokan@chromium.org, I don't mean to bother you, but wondering if you'd guess this other test case not allowing horizontal scrolling in a fixed scrolling element fitting the viewport, has the same cause as this issue. -> https://output.jsbin.com/rutoceb/quiet Open it in safari, see how using a horizontally scrolling gesture on the full screen red element behaves as normal, scrolling content left and right. In chromium, no scrolling is afforded from the same input. If I change the right property to -1px on the 'root' element, then the red block doesn't perfectly match the viewport (initial containing block?) and everything behaves as expected. If it's a different cause, I'm happy to file a separate issue. Thanks for your time.
,
Nov 15
Yes, I believe it's the same issue. It's related to the "Implicit Root Scroller" feature - until recently that was gated by chrome://flags/#enable-experimental-web-platform-features. I've recently enabled it in Canary (temporarily) for testing. I'll be turning it off shortly but I'll fix this issue before I ship it out to stable channel.
,
Nov 23
,
Nov 27
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/59d9ba119448a269289d57e7c3d23a7f04f19248 commit 59d9ba119448a269289d57e7c3d23a7f04f19248 Author: David Bokan <bokan@chromium.org> Date: Tue Nov 27 19:17:33 2018 [root-scroller] Don't promote when ancestor is scrollable If we have a candidate implicit root scroller, we should only promote it if it doesn't have a scrollable ancestor. The reason for this is that we end scroll chaining at the root scroller. This is necessary as the root scroller consumes all scroll in the form of overscroll effects. A (user) scrollable ancestor would be broken in this case, as shown in the example on the attached bug. Note: overflow in an ancestor is still allowed, as long as its overflow style is hidden or visible. Bug: 837007 Change-Id: Ied7a9f02eab76c4ea59fced94d0804ba47ef4e4a Reviewed-on: https://chromium-review.googlesource.com/c/1351590 Reviewed-by: Dave Tapuska <dtapuska@chromium.org> Commit-Queue: David Bokan <bokan@chromium.org> Cr-Commit-Position: refs/heads/master@{#611245} [modify] https://crrev.com/59d9ba119448a269289d57e7c3d23a7f04f19248/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc [modify] https://crrev.com/59d9ba119448a269289d57e7c3d23a7f04f19248/third_party/blink/renderer/core/page/scrolling/root_scroller_test.cc
,
Nov 27
,
Nov 27
Hey bokan@chromium.org, with your fix enabled, would you mind testing this url again... https://output.jsbin.com/rutoceb/quiet Not for the horizontal scrolling of the viewport covering scroll container... But for the little white rectangles that rest on the bottom edge of the screen. I ask, because the bug that it exhibits is only happening in the jsbin output endpoint, and not in the editor endpoint (https://jsbin.com/rutoceb/edit) which has the scrollers obviously not on the edge of the window. And if it isn't fixed by your changes, I will file it as a possible issue with the implementation of overscroll-behavior. Steps are... 1. Hover mouse on any white rectangle. 2. Attempt to scroll vertically. 3. Notice nothing scrolls, white rectangles do not scroll into view. 4. Move mouse a few pixels above white rectangles top edges, into the area which is not a horizontal scroll container. 5. Attempt vertical scroll and see how white rectangles scroll into view. 6. Again try to scroll vertically from white rectangles, nothing happens to scroll them away, until hovering area a few pixels above. Once more, this bug is only seen in this full screen (windows edge) scroll container ui, not in the editable link from the text.
,
Nov 27
Just checked - I believe it's unrelated to this bug or the ImplicitRootScroller feature more generally (you can try disabling/enabling using --disable-blink-features=ImplicitRootScroller or --enable-blink-features=ImplicitRootScroller). I was, however, able to make it work when using a low-DPI configuration (e.g. --force-device-scale-factor=1). I can reproduce your issue when using (default, on my system) high DPI (--force-device-scale-factor=2). I'll continue to investigate where the problem is - in the mean time, would you mind filing a new bug? Thanks
,
Nov 28
Ok, found the problem and filed bug 909083. FYI: this is a bug in how we handle pointer-events: none. If you remove it from the .tray element everything works.
,
Dec 7
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/eb070d8200bc92b44e939751833273617194c947 commit eb070d8200bc92b44e939751833273617194c947 Author: David Bokan <bokan@chromium.org> Date: Fri Dec 07 14:04:30 2018 [root-scroller] Allow horizontal document scrolling In https://crrev.com/59d9ba119448a269289d57e7c3d23a7f04f19248 we added the restriction that an element can only be promoted to implicit root scroller if none of its ancestors have scrolling or clipping. This inadvertantly removed a special case for allowing a horizontally scrollable document. Bug: 837007 Change-Id: I5a52d821266a5775e5be8641bdb6ed56fc9892f3 Reviewed-on: https://chromium-review.googlesource.com/c/1366784 Reviewed-by: Dave Tapuska <dtapuska@chromium.org> Commit-Queue: David Bokan <bokan@chromium.org> Cr-Commit-Position: refs/heads/master@{#614688} [modify] https://crrev.com/eb070d8200bc92b44e939751833273617194c947/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc [modify] https://crrev.com/eb070d8200bc92b44e939751833273617194c947/third_party/blink/renderer/core/page/scrolling/root_scroller_test.cc |
||||||
►
Sign in to add a comment |
||||||
Comment 1 by h...@jonjohnjohnson.com
, Apr 25 2018