From 7cd4c9535a7d7ec97590b8fdd15b8cb9aec932b8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 12 Mar 2023 01:48:01 -0500 Subject: [PATCH] GUI: fix IGFD parent dir being sorted --- extern/igfd/ImGuiFileDialog.cpp | 20 ++++++++++++++++++-- src/engine/fileOps.cpp | 2 ++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/extern/igfd/ImGuiFileDialog.cpp b/extern/igfd/ImGuiFileDialog.cpp index 36bd122b7..1cf7903dd 100644 --- a/extern/igfd/ImGuiFileDialog.cpp +++ b/extern/igfd/ImGuiFileDialog.cpp @@ -132,8 +132,11 @@ namespace IGFD #define resetButtonString ICON_FA_REPEAT #endif // resetButtonString #ifndef drivesButtonString -#define drivesButtonString "Drives" +#define drivesButtonString ICON_FA_HDD_O #endif // drivesButtonString +#ifndef parentDirString +#define parentDirString ICON_FA_CHEVRON_UP +#endif // parentDirString #ifndef editPathButtonString #define editPathButtonString ICON_FA_PENCIL #endif // editPathButtonString @@ -167,6 +170,9 @@ namespace IGFD #ifndef buttonResetPathString #define buttonResetPathString "Reset to current directory" #endif // buttonResetPathString +#ifndef buttonParentDirString +#define buttonParentDirString "Go to parent directory" +#endif #ifndef buttonCreateDirString #define buttonCreateDirString "Create Directory" #endif // buttonCreateDirString @@ -1475,7 +1481,7 @@ namespace IGFD infos->fileNameExt_optimized = prOptimizeFilenameForSearchOperations(infos->fileNameExt); infos->fileType = vFileType; - if (infos->fileNameExt.empty() || (infos->fileNameExt == "." && !vFileDialogInternal.puFilterManager.puDLGFilters.empty())) return; // filename empty or filename is the current dir '.' //-V807 + if (infos->fileNameExt.empty() || ((infos->fileNameExt == "." || infos->fileNameExt == "..") && !vFileDialogInternal.puFilterManager.puDLGFilters.empty())) return; // filename empty or filename is the current dir '.' //-V807 if (infos->fileNameExt != ".." && (vFileDialogInternal.puDLGflags & ImGuiFileDialogFlags_DontShowHiddenFiles) && infos->fileNameExt[0] == '.') // dont show hidden files if (!vFileDialogInternal.puFilterManager.puDLGFilters.empty() || (vFileDialogInternal.puFilterManager.puDLGFilters.empty() && infos->fileNameExt != ".")) // except "." if in directory mode //-V728 return; @@ -2217,6 +2223,16 @@ namespace IGFD if (ImGui::IsItemHovered()) ImGui::SetTooltip(buttonResetPathString); + ImGui::SameLine(); + if (IMGUI_BUTTON(parentDirString)) + { + if (SetPathOnParentDirectoryIfAny()) { + OpenCurrentPath(vFileDialogInternal); + } + } + if (ImGui::IsItemHovered()) + ImGui::SetTooltip(buttonParentDirString); + #ifdef WIN32 ImGui::SameLine(); diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 47e6fcaba..c1ce34897 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -2935,6 +2935,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { size_t pos=reader.tell(); logD("reading sample data..."); for (int i=0; isamples,sampLens[i]); if (!reader.seek(pos,SEEK_SET)) { logD("%d: couldn't seek to %d",i,pos); throw EndOfFileException(&reader,reader.tell()); @@ -2944,6 +2945,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) { } // convert effects + logD("converting module..."); for (int ch=0; ch<=chCount; ch++) { unsigned char fxCols=1; for (int pat=0; pat<=patMax; pat++) {