LibWeb: Fix select element state update in three ways

1. We were not propagating selectedness updates from option to select
   if the option was inside an optgroup.

2. When two or more options were selected, we were always favoring the
   last one in tree order, instead of the last one that got checked.

3. We were neglecting to return in the `display size is 1` case when
   all elements were disabled.

This was covered by some of the :has() selector tests. :^)
This commit is contained in:
Andreas Kling 2024-10-27 16:39:07 +01:00 committed by Andreas Kling
commit 6c75a93ec0
Notes: github-actions[bot] 2024-10-27 17:41:15 +00:00
4 changed files with 19 additions and 16 deletions

View file

@ -92,7 +92,7 @@ public:
void did_select_item(Optional<u32> const& id);
void update_selectedness();
void update_selectedness(JS::GCPtr<HTMLOptionElement> last_selected_option = nullptr);
private:
HTMLSelectElement(DOM::Document&, DOM::QualifiedName);