[webkit-changes] [WebKit/WebKit] 854716: Elements with `position: sticky` jitter inside a c...

Simon Fraser noreply at github.com
Sun Nov 13 08:51:02 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 854716970c0750581f75ee43bb91578d9ac52451
      https://github.com/WebKit/WebKit/commit/854716970c0750581f75ee43bb91578d9ac52451
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2022-11-13 (Sun, 13 Nov 2022)

  Changed paths:
    A LayoutTests/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt
    A LayoutTests/compositing/clipping/sticky-inside-overflow-x-clip.html
    A LayoutTests/platform/gtk/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt
    A LayoutTests/platform/ios-wk2/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt
    A LayoutTests/platform/mac-wk1/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt
    M Source/WebCore/platform/graphics/LayoutRect.h
    M Source/WebCore/rendering/RenderLayerCompositor.cpp

  Log Message:
  -----------
  Elements with `position: sticky` jitter inside a container with `overflow-x: clip;`
https://bugs.webkit.org/show_bug.cgi?id=247130
rdar://101645570

Reviewed by Alan Baradlay.

`overflow:clip` on just one axis can output a clip rect which is infinite in just
x or y. In that case, we'd create a clipping layer with large floating point
geometry values which, when moved around by the scrolling tree, had low precision
resulting in visible stutters.

Fix by shrinking the infinite rect values by a factor of 16, which is sufficient
to provide enough device pixel precision for 3x displays.

* LayoutTests/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt: Added.
* LayoutTests/compositing/clipping/sticky-inside-overflow-x-clip.html: Added.
* LayoutTests/platform/gtk/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt: Added.
* LayoutTests/platform/ios-wk2/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt: Added.
* LayoutTests/platform/mac-wk1/compositing/clipping/sticky-inside-overflow-x-clip-expected.txt: Added.
* Source/WebCore/platform/graphics/LayoutRect.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeAncestorClippingStack const):

Canonical link: https://commits.webkit.org/256618@main




More information about the webkit-changes mailing list