avm2: Parameterize mouse button in mouse_event()

This commit is contained in:
Kamil Jarosz 2024-07-06 22:15:38 +02:00 committed by TÖRÖK Attila
parent d625c0a779
commit 7a52360965
2 changed files with 23 additions and 5 deletions

View File

@ -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<InteractiveObject<'gc>>,
delta: i32,
bubbles: bool,
button: MouseButton,
) -> Object<'gc>
where
S: Into<AvmString<'gc>>,
@ -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(),
],

View File

@ -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);