LibWeb: Add support for handling drag-and-drop events of DOM elements

This allows dragging elements on the page and dropping them onto other
elements. This does not yet support dragging text.

The test added here is manual; the WPT tests rely heavily on WebDriver
actions.
This commit is contained in:
Timothy Flynn
2026-04-04 18:20:12 -04:00
committed by Tim Flynn
parent b7076c366d
commit cfe7ddc805
Notes: github-actions[bot] 2026-04-05 15:35:41 +00:00
6 changed files with 287 additions and 36 deletions

View File

@@ -121,6 +121,7 @@ private:
GC::Ptr<Painting::PaintableBox const> paint_root() const;
bool should_ignore_device_input_event() const;
bool is_dragging_element() const;
void handle_gamepad_connected(SDL_JoystickID);
void handle_gamepad_updated(SDL_JoystickID);
@@ -139,7 +140,9 @@ private:
GC::Weak<DOM::Node> m_effective_legacy_mouse_pointer_position;
Optional<u32> m_mousedown_button;
GC::Weak<DOM::Node> m_mousedown_target;
Optional<CSSPixelPoint> m_mousedown_visual_viewport_position;
int m_mousedown_click_count { 0 };
// https://w3c.github.io/pointerevents/#the-pointerdown-event