core: Add stubs for context menu
This commit is contained in:
parent
c353d1f079
commit
c8fefc56b5
|
@ -39,6 +39,7 @@ pub(crate) mod system_security;
|
|||
pub(crate) mod text_field;
|
||||
mod text_format;
|
||||
mod xml;
|
||||
pub(crate) mod context_menu;
|
||||
|
||||
#[allow(non_snake_case, unused_must_use)] //can't use errors yet
|
||||
pub fn getURL<'a, 'gc>(
|
||||
|
@ -314,6 +315,8 @@ pub fn create_globals<'gc>(
|
|||
//TODO: These need to be constructors and should also set `.prototype` on each one
|
||||
let object = object::create_object_object(gc_context, object_proto, function_proto);
|
||||
|
||||
let context_menu_proto = context_menu::create_proto(gc_context, object_proto, function_proto);
|
||||
|
||||
let button = FunctionObject::function(
|
||||
gc_context,
|
||||
Executable::Native(button::constructor),
|
||||
|
@ -456,6 +459,14 @@ pub fn create_globals<'gc>(
|
|||
EnumSet::empty(),
|
||||
);
|
||||
|
||||
let context_menu = context_menu::create_context_menu_object(gc_context, Some(context_menu_proto), Some(function_proto));
|
||||
globals.define_value(
|
||||
gc_context,
|
||||
"ContextMenu",
|
||||
context_menu.into(),
|
||||
EnumSet::empty()
|
||||
);
|
||||
|
||||
let system_security =
|
||||
system_security::create(gc_context, Some(object_proto), Some(function_proto));
|
||||
let system_capabilities = system_capabilities::create(gc_context, Some(object_proto));
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
use gc_arena::MutationContext;
|
||||
use crate::avm1::{Value, ScriptObject, Avm1};
|
||||
use crate::avm1::function::{FunctionObject, Executable};
|
||||
use crate::avm1::Object;
|
||||
use crate::context::UpdateContext;
|
||||
use crate::avm1::return_value::ReturnValue;
|
||||
use crate::avm1::error::Error;
|
||||
use enumset::EnumSet;
|
||||
|
||||
pub fn constructor<'gc>(
|
||||
_avm: &mut Avm1<'gc>,
|
||||
_context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
_this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<ReturnValue<'gc>, Error> {
|
||||
Ok(Value::Undefined.into())
|
||||
}
|
||||
|
||||
pub fn create_context_menu_object<'gc>(
|
||||
gc_context: MutationContext<'gc, '_>,
|
||||
context_menu_proto: Option<Object<'gc>>,
|
||||
fn_proto: Option<Object<'gc>>,
|
||||
) -> Object<'gc> {
|
||||
FunctionObject::function(
|
||||
gc_context,
|
||||
Executable::Native(constructor),
|
||||
fn_proto,
|
||||
context_menu_proto,
|
||||
)
|
||||
}
|
||||
|
||||
pub fn copy<'gc>(
|
||||
_avm: &mut Avm1<'gc>,
|
||||
_context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
_this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<ReturnValue<'gc>, Error> {
|
||||
log::warn!("ContextMenu.copy() not implemented");
|
||||
Ok(Value::Undefined.into())
|
||||
}
|
||||
|
||||
pub fn hide_builtin_items<'gc>(
|
||||
_avm: &mut Avm1<'gc>,
|
||||
_context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
_this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<ReturnValue<'gc>, Error> {
|
||||
log::warn!("ContextMenu.hideBuiltInItems() not implemented");
|
||||
Ok(Value::Undefined.into())
|
||||
}
|
||||
|
||||
pub fn on_select<'gc>(
|
||||
_avm: &mut Avm1<'gc>,
|
||||
_context: &mut UpdateContext<'_, 'gc, '_>,
|
||||
_this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<ReturnValue<'gc>, Error> {
|
||||
log::warn!("ContextMenu.onSelect() not implemented");
|
||||
Ok(Value::Undefined.into())
|
||||
}
|
||||
|
||||
pub fn create_proto<'gc>(
|
||||
gc_context: MutationContext<'gc, '_>,
|
||||
proto: Object<'gc>,
|
||||
fn_proto: Object<'gc>,
|
||||
) -> Object<'gc> {
|
||||
let mut object = ScriptObject::object(gc_context, Some(proto));
|
||||
|
||||
object.force_set_function(
|
||||
"copy",
|
||||
copy,
|
||||
gc_context,
|
||||
EnumSet::empty(),
|
||||
Some(fn_proto)
|
||||
);
|
||||
|
||||
object.force_set_function(
|
||||
"hideBuiltInItems",
|
||||
hide_builtin_items,
|
||||
gc_context,
|
||||
EnumSet::empty(),
|
||||
Some(fn_proto)
|
||||
);
|
||||
|
||||
object.force_set_function(
|
||||
"onSelect",
|
||||
on_select,
|
||||
gc_context,
|
||||
EnumSet::empty(),
|
||||
Some(fn_proto)
|
||||
);
|
||||
|
||||
object.into()
|
||||
}
|
Loading…
Reference in New Issue