diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-08 07:15:35 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-08 07:15:35 -0500 |
| commit | 6118684992543889486716f59e3f25da4372745a (patch) | |
| tree | 8ec75be8cf454a76d855ee637bf084ed3f259ee2 /editor | |
| parent | acc00f4eb7c02ba270cd71fa4bd50a468e6b0d19 (diff) | |
get absolute path of file
Diffstat (limited to 'editor')
| -rw-r--r-- | editor/editor.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp index 2130e0f..c198bae 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -794,22 +794,23 @@ DynArray<fsEntry> fsEntries{0, nullptr}; std::regex reg_sceneFile(".+\\.ps[tb]f$", std::regex_constants::icase); void BuildDirRecursive(const std::filesystem::directory_entry &de, fsEntry *dirFsEntry) { auto &entry = dirFsEntry == nullptr ? fsEntries.Push() : dirFsEntry->children.Push(); - auto len = strlen(de.path().c_str()) + 1; - entry.path = Pke_New<char>(len); - memset(entry.path, '\0', len); - memcpy(entry.path, de.path().c_str(), len - 1); - len = strlen(de.path().filename().c_str()); - entry.name = Pke_New<char>(len); - memset(entry.name, '\0', len); - memcpy(entry.name, de.path().filename().c_str(), len - 1); + auto fullPath = std::filesystem::absolute(de.path()); + auto len = strlen(fullPath.c_str()); + entry.path = Pke_New<char>(len + 1); + memset(entry.path, '\0', len + 1); + memcpy(entry.path, fullPath.c_str(), len); + len = strlen(fullPath.filename().c_str()); + entry.name = Pke_New<char>(len + 1); + memset(entry.name, '\0', len + 1); + memcpy(entry.name, fullPath.filename().c_str(), len); if (de.is_regular_file()) { - if (std::regex_search(de.path().c_str(), reg_sceneFile)) { + if (std::regex_search(fullPath.c_str(), reg_sceneFile)) { entry.type = 1; } } else if (de.is_directory()) { entry.type = 0; - std::filesystem::directory_iterator di{de.path()}; + std::filesystem::directory_iterator di{fullPath}; for (const std::filesystem::directory_entry &sde : di) { if (sde.is_directory() || (sde.is_regular_file() && std::regex_search(sde.path().c_str(), reg_sceneFile)) @@ -821,7 +822,7 @@ void BuildDirRecursive(const std::filesystem::directory_entry &de, fsEntry *dirF } void BuildProjectMenuRecursive(fsEntry &entry) { if (entry.type == 1) { - if (ImGui::Selectable(entry.name, false, ImGuiSelectableFlags_AllowDoubleClick)) { + if (ImGui::Selectable(entry.name, false, ImGuiSelectableFlags_AllowDoubleClick) && ImGui::IsMouseDoubleClicked(0)) { sceneName = entry.name; shouldLoadScene = true; } @@ -841,7 +842,7 @@ void RecordImGuiProjectBrowser() { } if (shouldRebuildProjectDir == true) { shouldRebuildProjectDir = false; - std::filesystem::directory_iterator di{"."}; + std::filesystem::directory_iterator di{std::filesystem::current_path()}; for (const std::filesystem::directory_entry &sde : di) { if (sde.is_directory() || (sde.is_regular_file() && std::regex_search(sde.path().c_str(), reg_sceneFile)) |
