LibWeb: Don't crash when input with no associated text node loses focus

This commit is contained in:
Tim Ledbetter 2024-11-04 09:28:27 +00:00 committed by Tim Ledbetter
parent 5010e42cd3
commit 56441fe3e6
Notes: github-actions[bot] 2024-11-04 10:09:31 +00:00
3 changed files with 16 additions and 3 deletions

View file

@ -0,0 +1 @@
PASS (didn't crash)

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<input type="checkbox">
<script src="../include.js"></script>
<script>
test(() => {
const input = document.querySelector("input");
input.focus();
input.blur();
println("PASS (didn't crash)");
});
</script>

View file

@ -1187,11 +1187,12 @@ void HTMLInputElement::did_receive_focus()
void HTMLInputElement::did_lose_focus()
{
if (m_text_node)
if (m_text_node) {
m_text_node->invalidate_style(DOM::StyleInvalidationReason::DidLoseFocus);
if (auto* paintable = m_text_node->paintable())
paintable->set_selected(false);
if (auto* paintable = m_text_node->paintable())
paintable->set_selected(false);
}
if (m_placeholder_text_node)
m_placeholder_text_node->invalidate_style(DOM::StyleInvalidationReason::DidLoseFocus);