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;
|
pub(crate) mod text_field;
|
||||||
mod text_format;
|
mod text_format;
|
||||||
mod xml;
|
mod xml;
|
||||||
|
pub(crate) mod context_menu;
|
||||||
|
|
||||||
#[allow(non_snake_case, unused_must_use)] //can't use errors yet
|
#[allow(non_snake_case, unused_must_use)] //can't use errors yet
|
||||||
pub fn getURL<'a, 'gc>(
|
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
|
//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 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(
|
let button = FunctionObject::function(
|
||||||
gc_context,
|
gc_context,
|
||||||
Executable::Native(button::constructor),
|
Executable::Native(button::constructor),
|
||||||
|
@ -456,6 +459,14 @@ pub fn create_globals<'gc>(
|
||||||
EnumSet::empty(),
|
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 =
|
let system_security =
|
||||||
system_security::create(gc_context, Some(object_proto), Some(function_proto));
|
system_security::create(gc_context, Some(object_proto), Some(function_proto));
|
||||||
let system_capabilities = system_capabilities::create(gc_context, Some(object_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