web: Inline all the Closures for JsCallback::register
This commit is contained in:
parent
e7fc1a7a4d
commit
a9c5928b62
156
web/src/lib.rs
156
web/src/lib.rs
|
@ -847,7 +847,10 @@ impl RuffleHandle {
|
|||
}));
|
||||
|
||||
// Create mouse move handler.
|
||||
let mouse_move_callback = Closure::new(move |js_event: PointerEvent| {
|
||||
instance.mouse_move_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointermove",
|
||||
Closure::new(move |js_event: PointerEvent| {
|
||||
let _ = ruffle.with_instance(move |instance| {
|
||||
let event = PlayerEvent::MouseMove {
|
||||
x: f64::from(js_event.offset_x()) * instance.device_pixel_ratio,
|
||||
|
@ -860,50 +863,44 @@ impl RuffleHandle {
|
|||
js_event.prevent_default();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_move_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointermove",
|
||||
mouse_move_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create mouse enter handler.
|
||||
let mouse_enter_callback = Closure::new(move |_js_event: PointerEvent| {
|
||||
instance.mouse_enter_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerenter",
|
||||
Closure::new(move |_js_event: PointerEvent| {
|
||||
let _ = ruffle.with_instance(move |instance| {
|
||||
let _ = instance.with_core_mut(|core| {
|
||||
core.set_mouse_in_stage(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_enter_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerenter",
|
||||
mouse_enter_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create mouse leave handler.
|
||||
let mouse_leave_callback = Closure::new(move |_js_event: PointerEvent| {
|
||||
instance.mouse_leave_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerleave",
|
||||
Closure::new(move |_js_event: PointerEvent| {
|
||||
let _ = ruffle.with_instance(move |instance| {
|
||||
let _ = instance.with_core_mut(|core| {
|
||||
core.set_mouse_in_stage(false);
|
||||
core.handle_event(PlayerEvent::MouseLeave);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_leave_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerleave",
|
||||
mouse_leave_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create mouse down handler.
|
||||
let mouse_down_callback = Closure::new(move |js_event: PointerEvent| {
|
||||
instance.mouse_down_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerdown",
|
||||
Closure::new(move |js_event: PointerEvent| {
|
||||
let _ = ruffle.with_instance(move |instance| {
|
||||
if let Some(target) = js_event.current_target() {
|
||||
let _ = target
|
||||
|
@ -927,50 +924,44 @@ impl RuffleHandle {
|
|||
|
||||
js_event.prevent_default();
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_down_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerdown",
|
||||
mouse_down_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create player mouse down handler.
|
||||
let player_mouse_down_callback = Closure::new(move |_js_event| {
|
||||
instance.player_mouse_down_callback = Some(JsCallback::register(
|
||||
&js_player,
|
||||
"pointerdown",
|
||||
Closure::new(move |_js_event| {
|
||||
let _ = ruffle.with_instance_mut(|instance| {
|
||||
instance.has_focus = true;
|
||||
// Ensure the parent window gets focus. This is necessary for events
|
||||
// to be received when the player is inside a frame.
|
||||
instance.window.focus().warn_on_error();
|
||||
});
|
||||
});
|
||||
|
||||
instance.player_mouse_down_callback = Some(JsCallback::register(
|
||||
&js_player,
|
||||
"pointerdown",
|
||||
player_mouse_down_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create window mouse down handler.
|
||||
let window_mouse_down_callback = Closure::new(move |_js_event| {
|
||||
instance.window_mouse_down_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"pointerdown",
|
||||
Closure::new(move |_js_event| {
|
||||
let _ = ruffle.with_instance_mut(|instance| {
|
||||
// If we actually clicked on the player, this will be reset to true
|
||||
// after the event bubbles down to the player.
|
||||
instance.has_focus = false;
|
||||
});
|
||||
});
|
||||
|
||||
instance.window_mouse_down_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"pointerdown",
|
||||
window_mouse_down_callback,
|
||||
}),
|
||||
true, // Use capture so this first *before* the player mouse down handler.
|
||||
));
|
||||
|
||||
// Create mouse up handler.
|
||||
let mouse_up_callback = Closure::new(move |js_event: PointerEvent| {
|
||||
instance.mouse_up_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerup",
|
||||
Closure::new(move |js_event: PointerEvent| {
|
||||
let _ = ruffle.with_instance(|instance| {
|
||||
if let Some(target) = js_event.current_target() {
|
||||
let _ = target
|
||||
|
@ -995,21 +986,23 @@ impl RuffleHandle {
|
|||
js_event.prevent_default();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_up_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"pointerup",
|
||||
mouse_up_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create mouse wheel handler.
|
||||
let mouse_wheel_callback = Closure::new(move |js_event: WheelEvent| {
|
||||
instance.mouse_wheel_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"wheel",
|
||||
Closure::new(move |js_event: WheelEvent| {
|
||||
let _ = ruffle.with_instance(|instance| {
|
||||
let delta = match js_event.delta_mode() {
|
||||
WheelEvent::DOM_DELTA_LINE => MouseWheelDelta::Lines(-js_event.delta_y()),
|
||||
WheelEvent::DOM_DELTA_PIXEL => MouseWheelDelta::Pixels(-js_event.delta_y()),
|
||||
WheelEvent::DOM_DELTA_LINE => {
|
||||
MouseWheelDelta::Lines(-js_event.delta_y())
|
||||
}
|
||||
WheelEvent::DOM_DELTA_PIXEL => {
|
||||
MouseWheelDelta::Pixels(-js_event.delta_y())
|
||||
}
|
||||
_ => return,
|
||||
};
|
||||
let _ = instance.with_core_mut(|core| {
|
||||
|
@ -1019,17 +1012,15 @@ impl RuffleHandle {
|
|||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
instance.mouse_wheel_callback = Some(JsCallback::register(
|
||||
&canvas,
|
||||
"wheel",
|
||||
mouse_wheel_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create keydown event handler.
|
||||
let key_down_callback = Closure::new(move |js_event: KeyboardEvent| {
|
||||
instance.key_down_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"keydown",
|
||||
Closure::new(move |js_event: KeyboardEvent| {
|
||||
let _ = ruffle.with_instance(|instance| {
|
||||
if instance.has_focus {
|
||||
let mut paste_event = false;
|
||||
|
@ -1063,21 +1054,19 @@ impl RuffleHandle {
|
|||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instance.key_down_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"keydown",
|
||||
key_down_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
let paste_callback = Closure::new(move |js_event: ClipboardEvent| {
|
||||
instance.paste_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"paste",
|
||||
Closure::new(move |js_event: ClipboardEvent| {
|
||||
let _ = ruffle.with_instance(|instance| {
|
||||
if instance.has_focus {
|
||||
let _ = instance.with_core_mut(|core| {
|
||||
let clipboard_content = if let Some(content) = js_event.clipboard_data()
|
||||
{
|
||||
let clipboard_content =
|
||||
if let Some(content) = js_event.clipboard_data() {
|
||||
content.get_data("text/plain").unwrap_or_default()
|
||||
} else {
|
||||
"".into()
|
||||
|
@ -1090,17 +1079,15 @@ impl RuffleHandle {
|
|||
js_event.prevent_default();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instance.paste_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"paste",
|
||||
paste_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
// Create keyup event handler.
|
||||
let key_up_callback = Closure::new(move |js_event: KeyboardEvent| {
|
||||
instance.key_up_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"keyup",
|
||||
Closure::new(move |js_event: KeyboardEvent| {
|
||||
let _ = ruffle.with_instance(|instance| {
|
||||
if instance.has_focus {
|
||||
let _ = instance.with_core_mut(|core| {
|
||||
|
@ -1111,25 +1098,18 @@ impl RuffleHandle {
|
|||
js_event.prevent_default();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instance.key_up_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"keyup",
|
||||
key_up_callback,
|
||||
}),
|
||||
false,
|
||||
));
|
||||
|
||||
let unload_callback = Closure::new(move |_| {
|
||||
let _ = ruffle.with_core_mut(|core| {
|
||||
core.flush_shared_objects();
|
||||
});
|
||||
});
|
||||
|
||||
instance.unload_callback = Some(JsCallback::register(
|
||||
&window,
|
||||
"unload",
|
||||
unload_callback,
|
||||
Closure::new(move |_| {
|
||||
let _ = ruffle.with_core_mut(|core| {
|
||||
core.flush_shared_objects();
|
||||
});
|
||||
}),
|
||||
false,
|
||||
));
|
||||
})?;
|
||||
|
|
Loading…
Reference in New Issue