LibWeb: Don't drop mouse wheel events sent to subframes unless handled

Otherwise scrolling gets stuck when you scroll over a non-scrollable
subframe.
This commit is contained in:
Luke Wilde 2025-10-07 15:46:30 +01:00 committed by Alexander Kalenik
parent adeedabf54
commit f44e42d27c

View File

@ -423,12 +423,11 @@ EventResult EventHandler::handle_mousewheel(CSSPixelPoint viewport_position, CSS
auto node = dom_node_for_event_dispatch(*paintable);
if (node) {
// FIXME: Support wheel events in nested browsing contexts.
if (is<HTML::HTMLIFrameElement>(*node)) {
auto& iframe = static_cast<HTML::HTMLIFrameElement&>(*node);
auto position_in_iframe = viewport_position.translated(compute_mouse_event_offset({}, *paintable));
iframe.content_navigable()->event_handler().handle_mousewheel(position_in_iframe, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y);
return EventResult::Dropped;
if (auto* navigable_container = as_if<HTML::NavigableContainer>(*node)) {
auto position_in_navigable_container = viewport_position.translated(compute_mouse_event_offset({}, *paintable));
auto result = navigable_container->content_navigable()->event_handler().handle_mousewheel(position_in_navigable_container, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y);
if (result == EventResult::Handled)
return EventResult::Handled;
}
// Search for the first parent of the hit target that's an element.