avm2: Fire right & middle click events
This commit is contained in:
parent
c7f1f33843
commit
57e90d947b
|
@ -281,30 +281,35 @@ pub trait TInteractiveObject<'gc>:
|
||||||
let mut activation = Avm2Activation::from_nothing(context.reborrow());
|
let mut activation = Avm2Activation::from_nothing(context.reborrow());
|
||||||
|
|
||||||
match event {
|
match event {
|
||||||
ClipEvent::Press { .. } => {
|
ClipEvent::Press { .. } | ClipEvent::RightPress | ClipEvent::MiddlePress => {
|
||||||
let avm2_event = Avm2EventObject::mouse_event(
|
let button = match event {
|
||||||
|
ClipEvent::Press { .. } => MouseButton::Left,
|
||||||
|
ClipEvent::RightPress => MouseButton::Right,
|
||||||
|
ClipEvent::MiddlePress => MouseButton::Middle,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
let avm2_event = Avm2EventObject::mouse_event_down(
|
||||||
&mut activation,
|
&mut activation,
|
||||||
"mouseDown",
|
|
||||||
self.as_displayobject(),
|
self.as_displayobject(),
|
||||||
None,
|
button,
|
||||||
0,
|
|
||||||
true,
|
|
||||||
MouseButton::Left,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Avm2::dispatch_event(&mut activation.context, avm2_event, target);
|
Avm2::dispatch_event(&mut activation.context, avm2_event, target);
|
||||||
|
|
||||||
ClipEventResult::Handled
|
ClipEventResult::Handled
|
||||||
}
|
}
|
||||||
ClipEvent::MouseUpInside => {
|
ClipEvent::MouseUpInside
|
||||||
let avm2_event = Avm2EventObject::mouse_event(
|
| ClipEvent::RightMouseUpInside
|
||||||
|
| ClipEvent::MiddleMouseUpInside => {
|
||||||
|
let avm2_event = Avm2EventObject::mouse_event_up(
|
||||||
&mut activation,
|
&mut activation,
|
||||||
"mouseUp",
|
|
||||||
self.as_displayobject(),
|
self.as_displayobject(),
|
||||||
None,
|
match event {
|
||||||
0,
|
ClipEvent::MouseUpInside => MouseButton::Left,
|
||||||
true,
|
ClipEvent::RightMouseUpInside => MouseButton::Right,
|
||||||
MouseButton::Left,
|
ClipEvent::MiddleMouseUpInside => MouseButton::Middle,
|
||||||
|
_ => unreachable!(),
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
Avm2::dispatch_event(&mut activation.context, avm2_event, target);
|
Avm2::dispatch_event(&mut activation.context, avm2_event, target);
|
||||||
|
@ -340,13 +345,9 @@ pub trait TInteractiveObject<'gc>:
|
||||||
|
|
||||||
self.raw_interactive_mut(context.gc_context).last_click = None;
|
self.raw_interactive_mut(context.gc_context).last_click = None;
|
||||||
} else {
|
} else {
|
||||||
let avm2_event = Avm2EventObject::mouse_event(
|
let avm2_event = Avm2EventObject::mouse_event_click(
|
||||||
&mut activation,
|
&mut activation,
|
||||||
"click",
|
|
||||||
self.as_displayobject(),
|
self.as_displayobject(),
|
||||||
None,
|
|
||||||
0,
|
|
||||||
true,
|
|
||||||
MouseButton::Left,
|
MouseButton::Left,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -357,6 +358,21 @@ pub trait TInteractiveObject<'gc>:
|
||||||
|
|
||||||
ClipEventResult::Handled
|
ClipEventResult::Handled
|
||||||
}
|
}
|
||||||
|
ClipEvent::RightRelease | ClipEvent::MiddleRelease => {
|
||||||
|
let avm2_event = Avm2EventObject::mouse_event_click(
|
||||||
|
&mut activation,
|
||||||
|
self.as_displayobject(),
|
||||||
|
match event {
|
||||||
|
ClipEvent::RightRelease => MouseButton::Right,
|
||||||
|
ClipEvent::MiddleRelease => MouseButton::Middle,
|
||||||
|
_ => unreachable!(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
Avm2::dispatch_event(&mut activation.context, avm2_event, target);
|
||||||
|
|
||||||
|
ClipEventResult::Handled
|
||||||
|
}
|
||||||
ClipEvent::ReleaseOutside => {
|
ClipEvent::ReleaseOutside => {
|
||||||
let avm2_event = Avm2EventObject::mouse_event(
|
let avm2_event = Avm2EventObject::mouse_event(
|
||||||
&mut activation,
|
&mut activation,
|
||||||
|
|
Loading…
Reference in New Issue