diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
index ec0ab1cb7a..c459358607 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp
@@ -1098,16 +1098,21 @@ void HTMLInputElement::update_slider_thumb_element()
void HTMLInputElement::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 HTMLInputElement::did_lose_focus()
{
+ if (m_text_node)
+ m_text_node->invalidate_style();
+
commit_pending_changes();
}
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
index 01b8fca9fd..bcbb56e4ad 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.cpp
@@ -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] {