diff --git a/Tests/LibWeb/Text/expected/hit_testing/button.txt b/Tests/LibWeb/Text/expected/hit_testing/button.txt new file mode 100644 index 0000000000..7fc555d082 --- /dev/null +++ b/Tests/LibWeb/Text/expected/hit_testing/button.txt @@ -0,0 +1 @@ +Button Clicked! diff --git a/Tests/LibWeb/Text/input/hit_testing/button.html b/Tests/LibWeb/Text/input/hit_testing/button.html new file mode 100644 index 0000000000..39712152b5 --- /dev/null +++ b/Tests/LibWeb/Text/input/hit_testing/button.html @@ -0,0 +1,21 @@ + + + + + diff --git a/Userland/Libraries/LibWeb/Page/EventHandler.cpp b/Userland/Libraries/LibWeb/Page/EventHandler.cpp index adc8dfc1d5..2dd1de250c 100644 --- a/Userland/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Userland/Libraries/LibWeb/Page/EventHandler.cpp @@ -34,8 +34,12 @@ static JS::GCPtr 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; }