1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 06:07:34 +00:00

LibWeb: Do paint-order traversal in Document::elements_from_point()

Elements are now collected according to paint order as spec says,
replacing the depth-first traversal of the paint tree with hit-testing
on each box.

This change resolves a FIXME in an existing test and adds a new
previously non-working test.
This commit is contained in:
Aliaksandr Kalenik 2024-02-13 21:34:46 +01:00 committed by Andreas Kling
parent 9c99182b1e
commit 9d2809146f
7 changed files with 68 additions and 20 deletions

View file

@ -0,0 +1,37 @@
<!DOCTYPE html>
<style>
.box {
width: 100px;
height: 100px;
position: absolute;
}
#a {
background-color: magenta;
z-index: 1;
transform: translate(110px, 10px);
}
#b {
background-color: mediumaquamarine;
z-index: 2;
transform: translate(120px, 20px);
}
#c {
background-color: greenyellow;
z-index: 3;
transform: translate(130px, 30px);
}
</style>
<div id="a" class="box"></div>
<div id="b" class="box"></div>
<div id="c" class="box">hello</div>
<script src="../include.js"></script>
<script>
test(() => {
for (const element of document.elementsFromPoint(150, 50)) {
printElement(element)
}
});
</script>