LibWeb: Fix hit-testing for button element

Change 'dom_node_for_event_dispatch' to locate the closest layout node
with a DOM node instead of only checking the direct ancestor.

This fixes hit-testing for buttons because they are wrapped into
multiple anonymous layout nodes (internally we use flex formatting for
them).
This commit is contained in:
Aliaksandr Kalenik 2024-02-12 14:58:10 +01:00 committed by Alexander Kalenik
parent 8e21bbf7bf
commit edab67d5e8
Notes: sideshowbarker 2024-07-17 07:20:57 +09:00
3 changed files with 28 additions and 2 deletions

View file

@ -34,8 +34,12 @@ static JS::GCPtr<DOM::Node> dom_node_for_event_dispatch(Painting::Paintable& pai
return node;
if (auto node = paintable.dom_node())
return node;
if (auto* layout_parent = paintable.layout_node().parent())
return layout_parent->dom_node();
auto* layout_parent = paintable.layout_node().parent();
while (layout_parent) {
if (auto* node = layout_parent->dom_node())
return node;
layout_parent = layout_parent->parent();
}
return nullptr;
}