LibWeb: Invalidate input element style on focus change

The style of input and textarea elements is now invalidated when focus
is changed to a new element. This ensures any `:focus` selectors are
applied correctly.
This commit is contained in:
Tim Ledbetter 2024-07-07 00:34:08 +01:00 committed by Sam Atkins
parent 9448c957c1
commit 572324d47b
Notes: sideshowbarker 2024-07-17 01:53:23 +09:00
2 changed files with 16 additions and 6 deletions

View file

@ -67,16 +67,21 @@ void HTMLTextAreaElement::visit_edges(Cell::Visitor& visitor)
void HTMLTextAreaElement::did_receive_focus()
{
auto navigable = document().navigable();
if (!navigable)
return;
if (!m_text_node)
return;
m_text_node->invalidate_style();
auto navigable = document().navigable();
if (!navigable) {
return;
}
navigable->set_cursor_position(DOM::Position::create(realm(), *m_text_node, 0));
}
void HTMLTextAreaElement::did_lose_focus()
{
if (m_text_node)
m_text_node->invalidate_style();
// The change event fires when the value is committed, if that makes sense for the control,
// or else when the control loses focus
queue_an_element_task(HTML::Task::Source::UserInteraction, [this] {