diff --git a/Libraries/LibWeb/Page/EventHandler.cpp b/Libraries/LibWeb/Page/EventHandler.cpp index 0b694386f3c..9a3b2ae2839 100644 --- a/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Libraries/LibWeb/Page/EventHandler.cpp @@ -555,7 +555,7 @@ EventResult EventHandler::handle_mouseup(CSSPixelPoint viewport_position, CSSPix } if (auto* input_control = input_control_associated_with_ancestor_label_element(*paintable)) { - if (button == UIEvents::MouseButton::Primary) { + if (button == UIEvents::MouseButton::Primary && input_control != node) { input_control->dispatch_event(UIEvents::MouseEvent::create_from_platform_event(node->realm(), UIEvents::EventNames::click, screen_position, page_offset, viewport_position, offset, {}, button, buttons, modifiers).release_value_but_fixme_should_propagate_errors()); } } diff --git a/Tests/LibWeb/Text/expected/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.txt b/Tests/LibWeb/Text/expected/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.txt new file mode 100644 index 00000000000..062e0983fb7 --- /dev/null +++ b/Tests/LibWeb/Text/expected/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.txt @@ -0,0 +1,2 @@ +click event on input#radio1 +click event on input#radio2 diff --git a/Tests/LibWeb/Text/input/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.html b/Tests/LibWeb/Text/input/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.html new file mode 100644 index 00000000000..ecba85e0e49 --- /dev/null +++ b/Tests/LibWeb/Text/input/UIEvents/click-event-on-checkbox-inside-label-element-not-duplicated.html @@ -0,0 +1,51 @@ + + + + +
+ + + +