From 22638d51995a10d36a7518a2f7f8a447de42cf0b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 16 May 2023 00:04:26 -0500 Subject: [PATCH] asset directories, part 6 --- src/engine/engine.cpp | 7 +++++++ src/gui/dataList.cpp | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 744d7274d..edf153fba 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -1599,6 +1599,13 @@ void DivEngine::checkAssetDir(std::vector& dir, size_t entries) { j--; continue; } + + // erase duplicate entry + if (inAssetDir[j]) { + i.entries.erase(i.entries.begin()+j); + j--; + continue; + } // mark entry as present inAssetDir[j]=true; diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 733b1a6b4..19fca6235 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -59,7 +59,7 @@ const char* sampleNote[12]={ e->lockEngine([&]() { \ int val=_type[dirToMove].entries[assetToMove]; \ _type[dirToMove].entries.erase(_type[dirToMove].entries.begin()+assetToMove); \ - _type[_d].entries.insert(_type[_d].entries.begin()+MAX(_a,0),val); \ + _type[_d].entries.insert((_a<0)?(_type[_d].entries.end()):(_type[_d].entries.begin()+_a),val); \ }); \ } \ } \ @@ -592,7 +592,8 @@ void FurnaceGUI::drawInsList(bool asChild) { insListItem(-1,-1,-1); int dirIndex=0; for (DivAssetDir& i: e->song.insDir) { - bool treeNode=ImGui::TreeNode(i.name.empty()?"":i.name.c_str()); + String nodeName=fmt::sprintf("%s %s##_AD%d",i.name.empty()?ICON_FA_FOLDER_O:ICON_FA_FOLDER,i.name.empty()?"":i.name,i.name.empty()?-1:dirIndex); + bool treeNode=ImGui::TreeNodeEx(nodeName.c_str(),ImGuiTreeNodeFlags_SpanAvailWidth|(i.name.empty()?ImGuiTreeNodeFlags_DefaultOpen:0)); DRAG_SOURCE(dirIndex,-1); DRAG_TARGET(dirIndex,-1,e->song.insDir); if (treeNode) {