avm2: Allow `Stage` to receive button presses
This commit is contained in:
parent
9d4b222b29
commit
35f020f482
|
@ -717,11 +717,11 @@ impl<'gc> TInteractiveObject<'gc> for Stage<'gc> {
|
|||
|
||||
fn event_dispatch(
|
||||
self,
|
||||
_context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
_event: ClipEvent,
|
||||
context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
event: ClipEvent,
|
||||
) -> ClipEventResult {
|
||||
//NOTE: Stage does not appear to fire common InteractiveObject events
|
||||
//within AVM2.
|
||||
self.event_dispatch_to_avm2(context, event);
|
||||
|
||||
ClipEventResult::Handled
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1172,6 +1172,8 @@ impl Player {
|
|||
if let Some(over_object) = context.mouse_over_object {
|
||||
events.push((over_object, ClipEvent::Press));
|
||||
context.mouse_down_object = context.mouse_over_object;
|
||||
} else {
|
||||
events.push((context.stage.into(), ClipEvent::Press));
|
||||
}
|
||||
} else {
|
||||
let released_inside = DisplayObject::option_ptr_eq(
|
||||
|
@ -1182,11 +1184,15 @@ impl Player {
|
|||
// Released inside the clicked object.
|
||||
if let Some(down_object) = context.mouse_down_object {
|
||||
events.push((down_object, ClipEvent::Release));
|
||||
} else {
|
||||
events.push((context.stage.into(), ClipEvent::Release));
|
||||
}
|
||||
} else {
|
||||
// Released outside the clicked object.
|
||||
if let Some(down_object) = context.mouse_down_object {
|
||||
events.push((down_object, ClipEvent::ReleaseOutside));
|
||||
} else {
|
||||
events.push((context.stage.into(), ClipEvent::ReleaseOutside));
|
||||
}
|
||||
// The new object is rolled over immediately.
|
||||
if let Some(over_object) = context.mouse_over_object {
|
||||
|
|
Loading…
Reference in New Issue