Rename InputEvent::MouseLeave to InputEvent::MouseLeftViewport (#38695)

1. `InputEvent::MouseLeave` indicates that mouse has left the viewport
(fired by embedder) or iframe (synthesized in Constellation
f24f225db8/components/constellation/constellation_webview.rs (L119-L122)).
Its handler in script is named as `handle_mouse_leave_event`, which is
very misleading as we have DOM event
[mouseleave](https://w3c.github.io/uievents/#event-type-mouseleave). I
rename it to `MouseLeftViewport` to be consistent with
`WindowEvent::CursorLeft`:
f24f225db8/ports/servoshell/desktop/headed_window.rs (L632-L638)
2. Add doc and rename function, such as `handle_mouse_move_event` to
`handle_native_mouse_move_event` to be closer to
[spec](https://w3c.github.io/uievents/#handle-native-mouse-move).

Testing: Just renaming + skipping unnecessary hit-test in simple case.
Fixes: Nothing but preparing for #38670 and #38435.

---------

Signed-off-by: Euclid Ye <euclid.ye@huawei.com>
This commit is contained in:
Euclid Ye 2025-08-15 17:54:54 +08:00 committed by GitHub
parent 8b574539d1
commit 494493ceb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 33 additions and 27 deletions

View file

@ -20,7 +20,7 @@ pub enum InputEvent {
Keyboard(KeyboardEvent),
MouseButton(MouseButtonEvent),
MouseMove(MouseMoveEvent),
MouseLeave(MouseLeaveEvent),
MouseLeftViewport(MouseLeftViewportEvent),
Touch(TouchEvent),
Wheel(WheelEvent),
Scroll(ScrollEvent),
@ -43,7 +43,7 @@ impl InputEvent {
InputEvent::Keyboard(..) => None,
InputEvent::MouseButton(event) => Some(event.point),
InputEvent::MouseMove(event) => Some(event.point),
InputEvent::MouseLeave(_) => None,
InputEvent::MouseLeftViewport(_) => None,
InputEvent::Touch(event) => Some(event.point),
InputEvent::Wheel(event) => Some(event.point),
InputEvent::Scroll(..) => None,
@ -58,7 +58,7 @@ impl InputEvent {
InputEvent::Keyboard(event) => event.webdriver_id,
InputEvent::MouseButton(event) => event.webdriver_id,
InputEvent::MouseMove(event) => event.webdriver_id,
InputEvent::MouseLeave(..) => None,
InputEvent::MouseLeftViewport(..) => None,
InputEvent::Touch(..) => None,
InputEvent::Wheel(event) => event.webdriver_id,
InputEvent::Scroll(..) => None,
@ -79,7 +79,7 @@ impl InputEvent {
InputEvent::MouseMove(ref mut event) => {
event.webdriver_id = webdriver_id;
},
InputEvent::MouseLeave(..) => {},
InputEvent::MouseLeftViewport(..) => {},
InputEvent::Touch(..) => {},
InputEvent::Wheel(ref mut event) => {
event.webdriver_id = webdriver_id;
@ -219,7 +219,7 @@ impl MouseMoveEvent {
}
#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize)]
pub struct MouseLeaveEvent {
pub struct MouseLeftViewportEvent {
pub focus_moving_to_another_iframe: bool,
}