Skip to content

Commit f44e42d

Browse files
Lubrsikalenikaliaksandr
authored andcommitted
LibWeb: Don't drop mouse wheel events sent to subframes unless handled
Otherwise scrolling gets stuck when you scroll over a non-scrollable subframe.
1 parent adeedab commit f44e42d

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

Libraries/LibWeb/Page/EventHandler.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -423,12 +423,11 @@ EventResult EventHandler::handle_mousewheel(CSSPixelPoint viewport_position, CSS
423423
auto node = dom_node_for_event_dispatch(*paintable);
424424

425425
if (node) {
426-
// FIXME: Support wheel events in nested browsing contexts.
427-
if (is<HTML::HTMLIFrameElement>(*node)) {
428-
auto& iframe = static_cast<HTML::HTMLIFrameElement&>(*node);
429-
auto position_in_iframe = viewport_position.translated(compute_mouse_event_offset({}, *paintable));
430-
iframe.content_navigable()->event_handler().handle_mousewheel(position_in_iframe, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y);
431-
return EventResult::Dropped;
426+
if (auto* navigable_container = as_if<HTML::NavigableContainer>(*node)) {
427+
auto position_in_navigable_container = viewport_position.translated(compute_mouse_event_offset({}, *paintable));
428+
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);
429+
if (result == EventResult::Handled)
430+
return EventResult::Handled;
432431
}
433432

434433
// Search for the first parent of the hit target that's an element.

0 commit comments

Comments
 (0)