LibWeb: Prevent StackingContext from hit testing when not visible

It exits if not visible, then hit tests children, then hit tests itself
if it's `visible_for_hit_testing()`.
This commit is contained in:
zac
2025-09-08 21:39:52 +10:00
committed by Alexander Kalenik
parent e2eb8716e5
commit 4e892b8b67
Notes: github-actions[bot] 2025-09-08 13:37:34 +00:00
3 changed files with 37 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
<!doctype html>
<body style="margin: 0">
<div style="height: 20px">
<!-- Hidden stacking contexts shouldn't get hit -->
<div id="a1" style="visibility: hidden; position: fixed; top: 0; width: 10px; height: 10px"></div>
<!-- Children of hidden stacking contexts shouldn't get hit -->
<div id="b1" style="visibility: hidden; position: fixed; top: 10px"><span id="b2" style="z-index: 1">hello</span></div>
</div>
<!-- Hidden text shouldn't get hit -->
<!-- <span id="c2" style="visibility: visible">hello</span> -->
<script src="../include.js"></script>
<script>
test(() => {
const printHit = (x, y) => {
const hit = internals.hitTest(x, y);
printElement(hit.node);
printElement(hit.node.parentNode);
println('---');
};
printHit(1, 1);
printHit(1, 11);
<!-- printHit(1, 51); -->
});
</script>