diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index e80db840ff7..2774d01ee3f 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -1427,6 +1427,10 @@ void Document::set_focused_element(Element* element) if (m_layout_root) m_layout_root->set_needs_display(); + + // Scroll the viewport if necessary to make the newly focused element visible. + if (m_focused_element) + m_focused_element->scroll_into_view(); } void Document::set_active_element(Element* element) diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index f3b8736d770..f45fad62034 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -160,7 +160,7 @@ public: WebIDL::ExceptionOr insert_adjacent_text(String const& where, String const& data); // https://w3c.github.io/csswg-drafts/cssom-view-1/#dom-element-scrollintoview - void scroll_into_view(Optional>); + void scroll_into_view(Optional> = {}); protected: Element(Document&, DOM::QualifiedName);