diff --git a/Base/res/html/misc/checkbox.html b/Base/res/html/misc/checkbox.html index 9264dcc488..a4126f5742 100644 --- a/Base/res/html/misc/checkbox.html +++ b/Base/res/html/misc/checkbox.html @@ -1,12 +1,29 @@ - -
+ + + + + + diff --git a/Userland/Libraries/LibWeb/Layout/Label.cpp b/Userland/Libraries/LibWeb/Layout/Label.cpp index 07e5578d14..10d7a41973 100644 --- a/Userland/Libraries/LibWeb/Layout/Label.cpp +++ b/Userland/Libraries/LibWeb/Layout/Label.cpp @@ -89,28 +89,35 @@ bool Label::is_associated_label_hovered(LabelableNode& control) return false; } +// https://html.spec.whatwg.org/multipage/forms.html#labeled-control Label* Label::label_for_control_node(LabelableNode& control) { - Label* label = nullptr; - if (!control.document().layout_node()) - return label; + return nullptr; - String id = control.dom_node().attribute(HTML::AttributeNames::id); - if (id.is_empty()) - return label; + // The for attribute may be specified to indicate a form control with which the caption is to be associated. + // If the attribute is specified, the attribute's value must be the ID of a labelable element in the + // same tree as the label element. If the attribute is specified and there is an element in the tree + // whose ID is equal to the value of the for attribute, and the first such element in tree order is + // a labelable element, then that element is the label element's labeled control. + if (auto id = control.dom_node().attribute(HTML::AttributeNames::id); !id.is_empty()) { + Label* label = nullptr; - control.document().layout_node()->for_each_in_inclusive_subtree_of_type