From 4baefa569bbffc969fed0e7c55f68657b21d2793 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 10 Sep 2023 03:38:10 -0500 Subject: [PATCH] IGFD: fix extension-less overwrite check --- extern/igfd/ImGuiFileDialog.cpp | 13 +++++++++++-- extern/igfd/ImGuiFileDialog.h | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/extern/igfd/ImGuiFileDialog.cpp b/extern/igfd/ImGuiFileDialog.cpp index 82207a587..a7c1c2b89 100644 --- a/extern/igfd/ImGuiFileDialog.cpp +++ b/extern/igfd/ImGuiFileDialog.cpp @@ -1934,14 +1934,23 @@ namespace IGFD prCurrentPath = vCurrentPath; } - bool IGFD::FileManager::IsFileExist(const std::string& vFile) + bool IGFD::FileManager::IsFileExist(const std::string& vFile, const std::string& vFileExt) { std::ifstream docFile(vFile, std::ios::in); + logV("IGFD: IsFileExist(%s)",vFile); if (docFile.is_open()) { docFile.close(); return true; } + + std::ifstream docFileE(vFile+vFileExt, std::ios::in); + logV("IGFD: IsFileExist(%s)",vFile+vFileExt); + if (docFileE.is_open()) + { + docFileE.close(); + return true; + } return false; } @@ -4564,7 +4573,7 @@ namespace IGFD { if (prFileDialogInternal.puIsOk) // catched only one time { - if (!prFileDialogInternal.puFileManager.IsFileExist(GetFilePathName())) // not existing => quit dialog + if (!prFileDialogInternal.puFileManager.IsFileExist(GetFilePathName(),prFileDialogInternal.puFilterManager.GetSelectedFilter().firstFilter)) // not existing => quit dialog { QuitFrame(); return true; diff --git a/extern/igfd/ImGuiFileDialog.h b/extern/igfd/ImGuiFileDialog.h index cecf885a3..6336c1979 100644 --- a/extern/igfd/ImGuiFileDialog.h +++ b/extern/igfd/ImGuiFileDialog.h @@ -913,7 +913,7 @@ namespace IGFD bool SetPathOnParentDirectoryIfAny(); // compose paht on parent directory std::string GetCurrentPath(); // get the current path void SetCurrentPath(const std::string& vCurrentPath); // set the current path - static bool IsFileExist(const std::string& vFile); + static bool IsFileExist(const std::string& vFile, const std::string& vFileExt); void SetDefaultFileName(const std::string& vFileName); bool SelectDirectory(const FileInfos& vInfos); // enter directory void SelectFileName(const FileDialogInternal& vFileDialogInternal,