diff --git a/Source/Core/DolphinWX/ISOProperties.cpp b/Source/Core/DolphinWX/ISOProperties.cpp index f2ef327c10..4dee90d5b4 100644 --- a/Source/Core/DolphinWX/ISOProperties.cpp +++ b/Source/Core/DolphinWX/ISOProperties.cpp @@ -1180,7 +1180,7 @@ bool CISOProperties::SaveGameConfig() return success; } -void CISOProperties::LaunchExternalEditor(const std::string& filename) +void CISOProperties::LaunchExternalEditor(const std::string& filename, bool wait_until_closed) { #ifdef __APPLE__ // wxTheMimeTypesManager is not yet implemented for wxCocoa @@ -1203,18 +1203,25 @@ void CISOProperties::LaunchExternalEditor(const std::string& filename) if (OpenCommand.IsEmpty()) { WxUtils::ShowErrorDialog(_("Couldn't find open command for extension 'ini'!")); + return; } + + long result; + + if (wait_until_closed) + result = wxExecute(OpenCommand, wxEXEC_SYNC); else + result = wxExecute(OpenCommand); + + if (result == -1) { - if (wxExecute(OpenCommand, wxEXEC_SYNC) == -1) - WxUtils::ShowErrorDialog(_("wxExecute returned -1 on application run!")); + WxUtils::ShowErrorDialog(_("wxExecute returned -1 on application run!")); + return; } + + if (wait_until_closed) + bRefreshList = true; // Just in case #endif - - bRefreshList = true; // Just in case - - // Once we're done with the ini edit, give the focus back to Dolphin - SetFocus(); } void CISOProperties::OnEditConfig(wxCommandEvent& WXUNUSED (event)) @@ -1226,7 +1233,7 @@ void CISOProperties::OnEditConfig(wxCommandEvent& WXUNUSED (event)) std::fstream blankFile(GameIniFileLocal, std::ios::out); blankFile.close(); } - LaunchExternalEditor(GameIniFileLocal); + LaunchExternalEditor(GameIniFileLocal, true); GameIniLocal.Load(GameIniFileLocal); LoadGameConfig(); } @@ -1283,7 +1290,7 @@ void CISOProperties::OnShowDefaultConfig(wxCommandEvent& WXUNUSED (event)) { std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename; if (File::Exists(path)) - LaunchExternalEditor(path); + LaunchExternalEditor(path, false); } } diff --git a/Source/Core/DolphinWX/ISOProperties.h b/Source/Core/DolphinWX/ISOProperties.h index cf771942ff..a7d275a297 100644 --- a/Source/Core/DolphinWX/ISOProperties.h +++ b/Source/Core/DolphinWX/ISOProperties.h @@ -195,7 +195,7 @@ private: IDM_BNRSAVEAS }; - void LaunchExternalEditor(const std::string& filename); + void LaunchExternalEditor(const std::string& filename, bool wait_until_closed); void CreateGUIControls(bool); void OnClose(wxCloseEvent& event);