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.
This commit is contained in:
Tim Ledbetter 2024-09-03 14:21:33 +01:00 committed by Tim Flynn
commit 63231fd276
Notes: github-actions[bot] 2024-09-04 14:00:50 +00:00
3 changed files with 6 additions and 5 deletions

View file

@ -1914,7 +1914,7 @@ void HTMLMediaElement::reject_pending_play_promises(ReadonlySpan<JS::NonnullGCPt
WebIDL::reject_promise(realm, promise, error);
}
WebIDL::ExceptionOr<void> HTMLMediaElement::handle_keydown(Badge<Web::EventHandler>, UIEvents::KeyCode key)
WebIDL::ExceptionOr<bool> HTMLMediaElement::handle_keydown(Badge<Web::EventHandler>, UIEvents::KeyCode key)
{
switch (key) {
case UIEvents::KeyCode::Key_Space:
@ -1961,10 +1961,10 @@ WebIDL::ExceptionOr<void> HTMLMediaElement::handle_keydown(Badge<Web::EventHandl
break;
default:
break;
return false;
}
return {};
return true;
}
void HTMLMediaElement::set_layout_display_time(Badge<Painting::MediaPaintable>, Optional<double> display_time)

View file

@ -109,7 +109,7 @@ public:
JS::NonnullGCPtr<TextTrack> add_text_track(Bindings::TextTrackKind kind, String const& label, String const& language);
WebIDL::ExceptionOr<void> handle_keydown(Badge<Web::EventHandler>, UIEvents::KeyCode);
WebIDL::ExceptionOr<bool> handle_keydown(Badge<Web::EventHandler>, UIEvents::KeyCode);
enum class MouseTrackingComponent {
Timeline,

View file

@ -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<HTML::HTMLMediaElement>(element)) {
auto& media_element = static_cast<HTML::HTMLMediaElement&>(*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);