1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:27:43 +00:00

LibWeb: Find closest scrollable paintable to call handle_mousewheel()

This makes event handler to try to find scrollable paintable in the
chain of containing blocks of hit box. This is very naive and will
have to be improved in the future.
This commit is contained in:
Aliaksandr Kalenik 2023-08-06 14:36:02 +02:00 committed by Andreas Kling
parent c7673605bb
commit 3eb9ae4ed5

View file

@ -163,6 +163,15 @@ bool EventHandler::handle_mousewheel(CSSPixelPoint position, unsigned button, un
if (auto result = target_for_mouse_position(position); result.has_value())
paintable = result->paintable;
auto* containing_block = paintable->containing_block();
while (containing_block) {
if (containing_block->is_scrollable()) {
const_cast<Painting::PaintableBox*>(containing_block->paintable_box())->handle_mousewheel({}, position, buttons, modifiers, wheel_delta_x * scroll_step_size, wheel_delta_y * scroll_step_size);
break;
}
containing_block = containing_block->containing_block();
}
if (paintable) {
paintable->handle_mousewheel({}, position, buttons, modifiers, wheel_delta_x, wheel_delta_y);