From d5d6f9bc923d96cb61897c60044571b29ae57a13 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 30 Nov 2023 15:42:57 -0500 Subject: [PATCH] LibWeb: Dispatch keydown events before invoking special handlers We need to give pages the opportunity to intercept keydown events and potentially stop them from propagating. Otherwise, for example, pressing an arrow key in an element is not observable via script. --- Userland/Libraries/LibWeb/Page/EventHandler.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/Page/EventHandler.cpp b/Userland/Libraries/LibWeb/Page/EventHandler.cpp index f604d35c22..b4fceac5df 100644 --- a/Userland/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Userland/Libraries/LibWeb/Page/EventHandler.cpp @@ -769,6 +769,10 @@ bool EventHandler::handle_keydown(KeyCode key, unsigned modifiers, u32 code_poin media_element.handle_keydown({}, key).release_value_but_fixme_should_propagate_errors(); } + bool continue_ = fire_keyboard_event(UIEvents::EventNames::keydown, m_browsing_context, key, modifiers, code_point); + if (!continue_) + return false; + if (m_browsing_context->cursor_position() && m_browsing_context->cursor_position()->node()->is_editable()) { auto& node = verify_cast(*m_browsing_context->cursor_position()->node()); @@ -824,10 +828,6 @@ bool EventHandler::handle_keydown(KeyCode key, unsigned modifiers, u32 code_poin return true; } - bool continue_ = fire_keyboard_event(UIEvents::EventNames::keydown, m_browsing_context, key, modifiers, code_point); - if (!continue_) - return false; - // FIXME: Work out and implement the difference between this and keydown. return fire_keyboard_event(UIEvents::EventNames::keypress, m_browsing_context, key, modifiers, code_point); }