mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-05 06:32:30 +02:00
LibWeb: Don't hit test anonymous containers if there are no fragments
We were always delegating hit tests to PaintableBox if a PaintableWithLines has no fragments, which means that anonymous containers could overlap with previous siblings and prioritize their border box rect. Instead, the nearest non-anonymous ancestor should take care of hit testing the children so the correct order is maintained. To achieve this, we no longer do an early hit test in PaintableWithLines::hit_test() if there are no fragments and default to the later PaintableBox::hit_test() call that does take anonymous containers into account. Fixes the issue seen in #4864.
This commit is contained in:
committed by
Tim Ledbetter
parent
c24be6a39d
commit
2cc8f0821c
Notes:
github-actions[bot]
2025-07-05 22:57:45 +00:00
Author: https://github.com/gmta Commit: https://github.com/LadybirdBrowser/ladybird/commit/2cc8f0821cd Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5298 Reviewed-by: https://github.com/tcl3 ✅
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<style>
|
||||
#a {
|
||||
margin-bottom: -20px;
|
||||
}
|
||||
body {
|
||||
border: 1px solid blue;
|
||||
}
|
||||
</style>
|
||||
<script src="../include.js"></script>
|
||||
<div id="a"><a href="#" id="target">You should be able to click this link</a></div><br>
|
||||
<script>
|
||||
test(() => {
|
||||
const hit = internals.hitTest(50, 18);
|
||||
printElement(hit.node);
|
||||
println(`index: ${hit.indexInNode}`);
|
||||
printElement(hit.node.parentNode);
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user