From 66813aea799d815caa17737cce265872b83f8b92 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Fri, 13 Jun 2025 14:11:27 +0200 Subject: [PATCH] LibWeb: Run focusing steps on navigation with the tab key We run these steps when focusing with a mouse pointer, and it seems sensible to implement the same behavior for keyboard navigation so we e.g. correctly unwind the previous focus chain. --- Libraries/LibWeb/Page/EventHandler.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWeb/Page/EventHandler.cpp b/Libraries/LibWeb/Page/EventHandler.cpp index c9df777b97f..6acfb870f65 100644 --- a/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Libraries/LibWeb/Page/EventHandler.cpp @@ -1001,7 +1001,7 @@ EventResult EventHandler::focus_next_element() for (; element; element = element->next_element_in_pre_order()) { if (element->is_focusable()) { - m_navigable->active_document()->set_focused_element(element); + HTML::run_focusing_steps(element, nullptr, HTML::FocusTrigger::Key); return EventResult::Handled; } } @@ -1019,7 +1019,7 @@ EventResult EventHandler::focus_next_element() if (!element) return set_focus_to_first_focusable_element(); - m_navigable->active_document()->set_focused_element(element); + HTML::run_focusing_steps(element, nullptr, HTML::FocusTrigger::Key); return EventResult::Handled; } @@ -1036,7 +1036,7 @@ EventResult EventHandler::focus_previous_element() for (; element; element = element->previous_element_in_pre_order()) { if (element->is_focusable()) { - m_navigable->active_document()->set_focused_element(element); + HTML::run_focusing_steps(element, nullptr, HTML::FocusTrigger::Key); return EventResult::Handled; } } @@ -1054,7 +1054,7 @@ EventResult EventHandler::focus_previous_element() if (!element) return set_focus_to_last_focusable_element(); - m_navigable->active_document()->set_focused_element(element); + HTML::run_focusing_steps(element, nullptr, HTML::FocusTrigger::Key); return EventResult::Handled; }