MCPcopy Create free account
hub / github.com/PerroEngine/Perro / nav_file_scope_parent

Function nav_file_scope_parent

perro_editor/res/scripts/scene/editor_nav.rs:1060–1095  ·  view source on GitHub ↗
(ctx: &mut ScriptContext<'_, API>)

Source from the content-addressed store, hash-verified

1058 .unwrap_or(false);
1059 if changed {
1060 refresh_all(ctx);
1061 }
1062}
1063
1064pub fn nav_file_scope_parent<API: ScriptAPI + ?Sized>(ctx: &mut ScriptContext<'_, API>) {
1065 let changed = with_state_mut!(ctx.run, EditorState, ctx.id, |state| {
1066 if state.sidebar_mode != "files" {
1067 return false;
1068 }
1069 let active = if state.active_asset_path.is_empty() {
1070 state.file_scope.clone()
1071 } else {
1072 state.active_asset_path.clone()
1073 };
1074 let parent = parent_res_folder(&active);
1075 if active.ends_with('/') {
1076 state.file_expanded_paths.retain(|path| path != &active);
1077 }
1078 state.file_scope = parent.clone();
1079 state.active_asset_path = if parent.is_empty() {
1080 filtered_file_paths(state)
1081 .first()
1082 .cloned()
1083 .unwrap_or_default()
1084 } else {
1085 parent.clone()
1086 };
1087 state.activity_mode = "scene".to_string();
1088 state.log = if parent.is_empty() {
1089 "folder\nres://".to_string()
1090 } else {
1091 format!("folder\n{}", editor_files::rel_label(&parent))
1092 };
1093 true
1094 })
1095 .unwrap_or(false);
1096 if changed {
1097 refresh_all(ctx);
1098 }

Callers 1

nav_sidebar_parentFunction · 0.85

Calls 1

refresh_allFunction · 0.85

Tested by

no test coverage detected