core: Pass UpdateContext to ContextMenuState::build_builtin_items

This simplifies code, as we do not have to access
the same elements over and over.
This commit is contained in:
Kamil Jarosz 2024-06-06 21:26:01 +02:00 committed by Nathan Adams
parent 2955add845
commit 1f3c230691
4 changed files with 12 additions and 14 deletions

View File

@ -186,11 +186,7 @@ pub fn make_context_menu_state<'gc>(
}
}
result.build_builtin_items(
builtin_items,
activation.context.stage,
&activation.context.ui.language(),
);
result.build_builtin_items(builtin_items, &mut activation.context);
if let Some(menu) = menu {
if let Ok(Value::Object(custom_items)) = menu.get("customItems", activation) {

View File

@ -66,11 +66,7 @@ pub fn make_context_menu_state<'gc>(
}
}
result.build_builtin_items(
builtin_items,
activation.context.stage,
&activation.context.ui.language(),
);
result.build_builtin_items(builtin_items, &mut activation.context);
if let Some(menu) = menu {
if let Ok(Value::Object(custom_items)) = menu.get_public_property("customItems", activation)

View File

@ -6,10 +6,10 @@
use crate::avm1;
use crate::avm2;
use crate::context::UpdateContext;
use crate::display_object::Stage;
use crate::display_object::TDisplayObject;
use crate::i18n::core_text;
use fluent_templates::LanguageIdentifier;
use gc_arena::Collect;
use ruffle_render::quality::StageQuality;
use serde::Serialize;
@ -26,22 +26,28 @@ impl<'gc> ContextMenuState<'gc> {
pub fn new() -> Self {
Self::default()
}
pub fn push(&mut self, item: ContextMenuItem, callback: ContextMenuCallback<'gc>) {
self.info.push(item);
self.callbacks.push(callback);
}
pub fn info(&self) -> &Vec<ContextMenuItem> {
&self.info
}
pub fn callback(&self, index: usize) -> &ContextMenuCallback<'gc> {
&self.callbacks[index]
}
pub fn build_builtin_items(
&mut self,
item_flags: BuiltInItemFlags,
stage: Stage<'gc>,
language: &LanguageIdentifier,
context: &mut UpdateContext<'_, 'gc>,
) {
let stage = context.stage;
let language = &context.ui.language();
let Some(root_mc) = stage.root_clip().and_then(|c| c.as_movie_clip()) else {
return;
};

View File

@ -602,7 +602,7 @@ impl Player {
// no AVM1 or AVM2 object - so just prepare the builtin items
let mut menu = ContextMenuState::new();
let builtin_items = BuiltInItemFlags::for_stage(context.stage);
menu.build_builtin_items(builtin_items, context.stage, &context.ui.language());
menu.build_builtin_items(builtin_items, context);
menu
};