diff --git a/core/src/avm2/object/event_object.rs b/core/src/avm2/object/event_object.rs index 6b25d4bd6..921018600 100644 --- a/core/src/avm2/object/event_object.rs +++ b/core/src/avm2/object/event_object.rs @@ -9,7 +9,7 @@ use crate::avm2::Error; use crate::context::UpdateContext; use crate::display_object::TDisplayObject; use crate::display_object::{DisplayObject, InteractiveObject, TInteractiveObject}; -use crate::events::KeyCode; +use crate::events::{KeyCode, MouseButton}; use crate::string::AvmString; use gc_arena::{Collect, GcCell, GcWeakCell, Mutation}; use std::cell::{Ref, RefMut}; @@ -100,6 +100,7 @@ impl<'gc> EventObject<'gc> { related_object: Option>, delta: i32, bubbles: bool, + button: MouseButton, ) -> Object<'gc> where S: Into>, @@ -137,7 +138,7 @@ impl<'gc> EventObject<'gc> { // shiftKey activation.context.input.is_key_down(KeyCode::Shift).into(), // buttonDown - activation.context.input.is_mouse_down().into(), + activation.context.input.is_key_down(button.into()).into(), // delta delta.into(), ], diff --git a/core/src/display_object/interactive.rs b/core/src/display_object/interactive.rs index 385115fd1..6bbfb7af2 100644 --- a/core/src/display_object/interactive.rs +++ b/core/src/display_object/interactive.rs @@ -18,7 +18,7 @@ use crate::display_object::stage::Stage; use crate::display_object::{ DisplayObject, DisplayObjectBase, TDisplayObject, TDisplayObjectContainer, }; -use crate::events::{ClipEvent, ClipEventResult}; +use crate::events::{ClipEvent, ClipEventResult, MouseButton}; use bitflags::bitflags; use gc_arena::{Collect, Mutation}; use ruffle_macros::enum_trait_object; @@ -289,6 +289,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -303,6 +304,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -331,6 +333,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -344,6 +347,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -361,6 +365,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -377,6 +382,7 @@ pub trait TInteractiveObject<'gc>: to, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -393,8 +399,15 @@ pub trait TInteractiveObject<'gc>: break; } - let avm2_event = - Avm2EventObject::mouse_event(&mut activation, "rollOut", tgt, to, 0, false); + let avm2_event = Avm2EventObject::mouse_event( + &mut activation, + "rollOut", + tgt, + to, + 0, + false, + MouseButton::Left, + ); if let Avm2Value::Object(avm2_target) = tgt.object2() { Avm2::dispatch_event(&mut activation.context, avm2_event, avm2_target); @@ -427,6 +440,7 @@ pub trait TInteractiveObject<'gc>: from, 0, false, + MouseButton::Left, ); if let Avm2Value::Object(avm2_target) = tgt.object2() { @@ -443,6 +457,7 @@ pub trait TInteractiveObject<'gc>: from, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -457,6 +472,7 @@ pub trait TInteractiveObject<'gc>: None, delta.lines() as i32, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target); @@ -471,6 +487,7 @@ pub trait TInteractiveObject<'gc>: None, 0, true, + MouseButton::Left, ); Avm2::dispatch_event(&mut activation.context, avm2_event, target);