From 2dc196a0bdd8b3fda0e07bd0e5f5b1a98831fff5 Mon Sep 17 00:00:00 2001 From: ansstuff Date: Thu, 26 Apr 2012 18:11:24 +0000 Subject: [PATCH] Taseditor: fixed filename logic when user creates project from an fm2 or a corrupted fm3 --- src/drivers/win/taseditor.cpp | 10 +++++----- src/drivers/win/taseditor/taseditor_project.cpp | 7 +++++-- src/drivers/win/taseditor/taseditor_project.h | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/drivers/win/taseditor.cpp b/src/drivers/win/taseditor.cpp index 9e28ffa9..c7e2ec2b 100644 --- a/src/drivers/win/taseditor.cpp +++ b/src/drivers/win/taseditor.cpp @@ -415,12 +415,12 @@ bool SaveProjectAs() ofn.lpstrDefExt = "fm3"; ofn.nMaxFile = 2048; ofn.Flags = OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT; - string initdir = FCEU_GetPath(FCEUMKF_MOVIE); //Initial directory + string initdir = FCEU_GetPath(FCEUMKF_MOVIE); // initial directory ofn.lpstrInitialDir = initdir.c_str(); - if(GetSaveFileName(&ofn)) //If it is a valid filename + if(GetSaveFileName(&ofn)) // if it is a valid filename { - project.RenameProject(nameo); + project.RenameProject(nameo, true); project.save(); taseditor_window.UpdateRecentProjectsArray(nameo); } else return false; @@ -544,10 +544,10 @@ void SaveCompact() ofn.lpstrDefExt = "fm3"; ofn.nMaxFile = 2048; ofn.Flags = OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT; - string initdir = FCEU_GetPath(FCEUMKF_MOVIE); //Initial directory + string initdir = FCEU_GetPath(FCEUMKF_MOVIE); // initial directory ofn.lpstrInitialDir = initdir.c_str(); - if(GetSaveFileName(&ofn)) //If it is a valid filename + if(GetSaveFileName(&ofn)) // if it is a valid filename project.save(nameo, taseditor_config.savecompact_binary, taseditor_config.savecompact_markers, taseditor_config.savecompact_bookmarks, taseditor_config.savecompact_greenzone, taseditor_config.savecompact_history, taseditor_config.savecompact_piano_roll, taseditor_config.savecompact_selection); } } diff --git a/src/drivers/win/taseditor/taseditor_project.cpp b/src/drivers/win/taseditor/taseditor_project.cpp index 27102fd0..01b767f7 100644 --- a/src/drivers/win/taseditor/taseditor_project.cpp +++ b/src/drivers/win/taseditor/taseditor_project.cpp @@ -270,13 +270,13 @@ bool TASEDITOR_PROJECT::load(char* fullname) splicer.reset(); popup_display.reset(); reset(); - RenameProject(fullname); + RenameProject(fullname, load_all); // restore mouse cursor shape taseditor_window.must_update_mouse_cursor = true; return true; } -void TASEDITOR_PROJECT::RenameProject(char* new_fullname) +void TASEDITOR_PROJECT::RenameProject(char* new_fullname, bool filename_is_correct) { projectFile = new_fullname; char drv[512], dir[512], name[512], ext[512]; // For getting the filename @@ -285,6 +285,9 @@ void TASEDITOR_PROJECT::RenameProject(char* new_fullname) std::string thisfm2name = name; thisfm2name.append(".fm2"); fm2FileName = thisfm2name; + // if filename is not correct (for example, user opened a corrupted FM3) clear the filename, so on Ctrl+S user will be forwarded to SaveAs + if (!filename_is_correct) + projectFile.clear(); } // ----------------------------------------------------------------- std::string TASEDITOR_PROJECT::GetProjectFile() diff --git a/src/drivers/win/taseditor/taseditor_project.h b/src/drivers/win/taseditor/taseditor_project.h index aa01f60f..5a07dea9 100644 --- a/src/drivers/win/taseditor/taseditor_project.h +++ b/src/drivers/win/taseditor/taseditor_project.h @@ -42,7 +42,7 @@ public: bool save(const char* different_name = 0, bool save_binary = true, bool save_markers = true, bool save_bookmarks = true, bool save_greenzone = true, bool save_history = true, bool save_piano_roll = true, bool save_selection = true); bool load(char* fullname); - void RenameProject(char* new_fullname); + void RenameProject(char* new_fullname, bool filename_is_correct); std::string GetProjectFile(); std::string GetProjectName();