LibWeb: Prevent default on pointerdown/mousedown should skip focus steps

Fixes a bug in the ChatGPT model dropdown where clicking it immediately
closes the menu because focus is being stolen.
This commit is contained in:
Aliaksandr Kalenik 2025-11-21 01:59:17 +01:00 committed by Andreas Kling
parent d5d37abfa5
commit 2a18b6b802
Notes: github-actions[bot] 2025-11-21 07:32:06 +00:00
3 changed files with 46 additions and 2 deletions

View file

@ -667,8 +667,10 @@ EventResult EventHandler::handle_mousedown(CSSPixelPoint visual_viewport_positio
auto offset = compute_mouse_event_offset(page_offset, *layout_node->first_paintable());
auto pointer_event = UIEvents::PointerEvent::create_from_platform_event(node->realm(), m_navigable->active_window_proxy(), UIEvents::EventNames::pointerdown, screen_position, page_offset, viewport_position, offset, {}, button, buttons, modifiers).release_value_but_fixme_should_propagate_errors();
light_dismiss_activities(pointer_event, node);
node->dispatch_event(pointer_event);
node->dispatch_event(UIEvents::MouseEvent::create_from_platform_event(node->realm(), m_navigable->active_window_proxy(), UIEvents::EventNames::mousedown, screen_position, page_offset, viewport_position, offset, {}, button, buttons, modifiers).release_value_but_fixme_should_propagate_errors());
if (!node->dispatch_event(pointer_event))
return EventResult::Cancelled;
if (!node->dispatch_event(UIEvents::MouseEvent::create_from_platform_event(node->realm(), m_navigable->active_window_proxy(), UIEvents::EventNames::mousedown, screen_position, page_offset, viewport_position, offset, {}, button, buttons, modifiers).release_value_but_fixme_should_propagate_errors()))
return EventResult::Cancelled;
}
// NOTE: Dispatching an event may have disturbed the world.