new_editor: isolate project panel state and harden runtime reset
This commit is contained in:
@@ -553,7 +553,16 @@ std::string RemapMovedItemId(
|
||||
|
||||
} // namespace
|
||||
|
||||
void ProjectBrowserModel::Reset() {
|
||||
m_assetsRootPath.clear();
|
||||
m_folderEntries.clear();
|
||||
m_treeItems.clear();
|
||||
m_assetEntries.clear();
|
||||
m_currentFolderId.clear();
|
||||
}
|
||||
|
||||
void ProjectBrowserModel::Initialize(const std::filesystem::path& repoRoot) {
|
||||
Reset();
|
||||
m_assetsRootPath = (repoRoot / "project/Assets").lexically_normal();
|
||||
TraceProjectBrowser("ProjectBrowserModel::Initialize assetsRoot=" + PathToUtf8String(m_assetsRootPath));
|
||||
std::error_code errorCode = {};
|
||||
@@ -571,21 +580,6 @@ void ProjectBrowserModel::Initialize(const std::filesystem::path& repoRoot) {
|
||||
std::to_string(m_assetEntries.size()));
|
||||
}
|
||||
|
||||
void ProjectBrowserModel::SetFolderIcon(const ::XCEngine::UI::UITextureHandle& icon) {
|
||||
if (m_folderIcon.nativeHandle == icon.nativeHandle &&
|
||||
m_folderIcon.width == icon.width &&
|
||||
m_folderIcon.height == icon.height &&
|
||||
m_folderIcon.kind == icon.kind &&
|
||||
m_folderIcon.resourceHandle == icon.resourceHandle) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_folderIcon = icon;
|
||||
if (!m_assetsRootPath.empty()) {
|
||||
RefreshFolderTree();
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectBrowserModel::Refresh() {
|
||||
TraceProjectBrowser("ProjectBrowserModel::Refresh begin");
|
||||
RefreshFolderTree();
|
||||
@@ -1307,7 +1301,6 @@ void ProjectBrowserModel::RefreshFolderTree() {
|
||||
item.label = folderEntry.label;
|
||||
item.depth = depth;
|
||||
item.forceLeaf = !HasChildDirectories(folderPath);
|
||||
item.leadingIcon = m_folderIcon;
|
||||
m_treeItems.push_back(std::move(item));
|
||||
|
||||
const std::vector<std::filesystem::path> childFolders =
|
||||
|
||||
Reference in New Issue
Block a user