1.2 KiB
1.2 KiB
ProjectManager::RefreshCurrentFolder
void RefreshCurrentFolder();
当前行为
这个方法当前不是“只刷新当前目录 children 列表”,而是调用内部 RebuildTreePreservingPath() 重建整棵 Assets 树,然后尽量恢复当前浏览状态。
内部主要流程是:
- 记录旧的目录路径栈
m_path - 重新从
<project>/Assets扫描整棵树 - 重新解析旧路径栈,尽量恢复当前面包屑位置
- 通过
SyncSelection()重新校验当前m_selectedItemPath
保留语义
- 若原浏览路径中的每一级目录仍然存在,则当前目录会被保留
- 若中间某一级目录已不存在,则恢复过程会在该层停止
- 若当前选中项路径仍能在当前目录项中重新解析,选择会保留
- 若当前选中项已不存在,则选择会被清空
这也是当前刷新后即使目录项顺序变化,选择仍可恢复的原因。
失败语义
当前实现把异常吞掉,因此:
- 刷新失败时不会抛异常
- 也不会提供错误返回值
- 上层看到的通常是“保持旧状态”