diff --git a/src/gui/fileDialog.cpp b/src/gui/fileDialog.cpp index a0a10103d..c66a27e66 100644 --- a/src/gui/fileDialog.cpp +++ b/src/gui/fileDialog.cpp @@ -8,6 +8,7 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector filter, c if (opened) return false; saving=false; curPath=path; + logD("opening load file dialog with curPath %s",curPath); if (sysDialog) { dialogO=new pfd::open_file(header,path,filter); } else { @@ -22,6 +23,7 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector filter, c if (opened) return false; saving=true; curPath=path; + logD("opening save file dialog with curPath %s",curPath); if (sysDialog) { dialogS=new pfd::save_file(header,path,filter); } else { @@ -65,6 +67,8 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { if (dialogS!=NULL) { if (dialogS->ready(0)) { fileName=dialogS->result(); + size_t dsPos=fileName.rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); logD("returning %s",fileName.c_str()); return true; } @@ -77,6 +81,8 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { logD("returning nothing"); } else { fileName=dialogO->result()[0]; + size_t dsPos=fileName.rfind(DIR_SEPARATOR); + if (dsPos!=String::npos) curPath=fileName.substr(0,dsPos); logD("returning %s",fileName.c_str()); } return true; @@ -91,8 +97,15 @@ bool FurnaceGUIFileDialog::render(const ImVec2& min, const ImVec2& max) { String FurnaceGUIFileDialog::getPath() { if (sysDialog) { + if (curPath.size()>0) { + if (curPath[curPath.size()-1]==DIR_SEPARATOR) { + curPath=curPath.substr(0,curPath.size()-1); + } + } + logD("curPath: %s",curPath); return curPath; } else { + logD("curPath: %s",ImGuiFileDialog::Instance()->GetCurrentPath()); return ImGuiFileDialog::Instance()->GetCurrentPath(); } }