-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[css-scroll-snap] Skip renderers with no element in updateSnapOffsets…
…ForScrollableArea https://bugs.webkit.org/show_bug.cgi?id=263093 rdar://111579277 Reviewed by Simon Fraser. We should skip renderers in updateSnapOffsetsForScrollableArea if they have no related element. For generated content we do generate an associated element as well, so the only time a renderer's element is null is for anonymous renderers (as specified in RenderElement.h as well), which we shouldn't snap to. * Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp: (WebCore::updateSnapOffsetsForScrollableArea): Canonical link: https://commits.webkit.org/275523@main
- Loading branch information
Showing
4 changed files
with
100 additions
and
4 deletions.
There are no files selected for viewing
3 changes: 3 additions & 0 deletions
3
...w3c/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
|
||
PASS Only snap to visible areas in the case where taking the closest snap point of each axis does not snap to a visible area | ||
|
93 changes: 93 additions & 0 deletions
93
...mported/w3c/web-platform-tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
<!DOCTYPE html> | ||
<title> | ||
Snap to a visible area only even when there is a closer snap point for an area | ||
that is closer but not visible (using both axes snap type), where the relevant | ||
snap areas are pseudo-elements | ||
</title> | ||
<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<style> | ||
|
||
body, html { height: 100%; } | ||
|
||
div { | ||
position: absolute; | ||
margin: 0px; | ||
} | ||
|
||
#scroller { | ||
height: 600px; | ||
width: 600px; | ||
overflow: scroll; | ||
scroll-snap-type: both mandatory; | ||
} | ||
|
||
#space { | ||
width: 2000px; | ||
height: 2000px; | ||
} | ||
|
||
.snap { | ||
width: 200px; | ||
height: 200px; | ||
background-color: blue; | ||
scroll-snap-align: start; | ||
} | ||
|
||
#left-top { | ||
left: 0px; | ||
top: 0px; | ||
} | ||
|
||
#left-top::before { | ||
position: absolute; | ||
margin: 0px; | ||
content: ""; | ||
|
||
display:block; | ||
|
||
left: 0px; | ||
top: 800px; | ||
width: 200px; | ||
height: 200px; | ||
background-color: yellow; | ||
scroll-snap-align: start; | ||
} | ||
|
||
#left-top::after { | ||
position: absolute; | ||
margin: 0px; | ||
content: ""; | ||
|
||
display:block; | ||
|
||
left: 800px; | ||
top: 0px; | ||
width: 200px; | ||
height: 200px; | ||
background-color: yellow; | ||
scroll-snap-align: start; | ||
|
||
} | ||
|
||
</style> | ||
<div id="scroller"> | ||
<div id="space"></div> | ||
<div id="left-top" class="snap"></div> | ||
</div> | ||
<script> | ||
test(t => { | ||
const scroller = document.getElementById("scroller"); | ||
scroller.scrollTo(0, 0); | ||
assert_equals(scroller.scrollLeft, 0); | ||
assert_equals(scroller.scrollTop, 0); | ||
scroller.scrollTo(500, 600); | ||
assert_equals(scroller.scrollLeft, 0); | ||
assert_equals(scroller.scrollTop, 800); | ||
scroller.scrollTo(600, 500); | ||
assert_equals(scroller.scrollLeft, 800); | ||
assert_equals(scroller.scrollTop, 0); | ||
}, 'Only snap to visible areas in the case where taking the closest snap point of \ | ||
each axis does not snap to a visible area'); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters