summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-08 07:15:35 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-08 07:15:35 -0500
commit6118684992543889486716f59e3f25da4372745a (patch)
tree8ec75be8cf454a76d855ee637bf084ed3f259ee2 /editor
parentacc00f4eb7c02ba270cd71fa4bd50a468e6b0d19 (diff)
get absolute path of file
Diffstat (limited to 'editor')
-rw-r--r--editor/editor.cpp25
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))