From 63231fd2763e3db094be926f599486122265243f Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Tue, 3 Sep 2024 14:21:33 +0100 Subject: [PATCH] LibWeb: Don't propagate key events that are handled by the media player If a key is pressed when the media player is in focus, which causes the media player to perform some action, that key event is no longer propagated further. --- Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp | 6 +++--- Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h | 2 +- Userland/Libraries/LibWeb/Page/EventHandler.cpp | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp index 72aa8bda17e..9a00f75c94c 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp @@ -1914,7 +1914,7 @@ void HTMLMediaElement::reject_pending_play_promises(ReadonlySpan HTMLMediaElement::handle_keydown(Badge, UIEvents::KeyCode key) +WebIDL::ExceptionOr HTMLMediaElement::handle_keydown(Badge, UIEvents::KeyCode key) { switch (key) { case UIEvents::KeyCode::Key_Space: @@ -1961,10 +1961,10 @@ WebIDL::ExceptionOr HTMLMediaElement::handle_keydown(Badge, Optional display_time) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h index 5076dba641e..b45a6eb43cd 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h @@ -109,7 +109,7 @@ public: JS::NonnullGCPtr add_text_track(Bindings::TextTrackKind kind, String const& label, String const& language); - WebIDL::ExceptionOr handle_keydown(Badge, UIEvents::KeyCode); + WebIDL::ExceptionOr handle_keydown(Badge, UIEvents::KeyCode); enum class MouseTrackingComponent { Timeline, diff --git a/Userland/Libraries/LibWeb/Page/EventHandler.cpp b/Userland/Libraries/LibWeb/Page/EventHandler.cpp index 09dc8933e38..33b6af3856c 100644 --- a/Userland/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Userland/Libraries/LibWeb/Page/EventHandler.cpp @@ -890,7 +890,8 @@ bool EventHandler::handle_keydown(UIEvents::KeyCode key, u32 modifiers, u32 code if (auto* element = m_navigable->active_document()->focused_element(); is(element)) { auto& media_element = static_cast(*element); - media_element.handle_keydown({}, key).release_value_but_fixme_should_propagate_errors(); + if (media_element.handle_keydown({}, key).release_value_but_fixme_should_propagate_errors()) + return true; } bool continue_ = fire_keyboard_event(UIEvents::EventNames::keydown, m_navigable, key, modifiers, code_point);