diff --git a/src/ride/TrackDesignRepository.cpp b/src/ride/TrackDesignRepository.cpp index f0fa587933..3372803c3a 100644 --- a/src/ride/TrackDesignRepository.cpp +++ b/src/ride/TrackDesignRepository.cpp @@ -135,6 +135,7 @@ public: if (platform_file_delete(path)) { _items.erase(_items.begin() + index); + result = true; } } } @@ -153,19 +154,15 @@ public: utf8 newPath[MAX_PATH]; Path::GetDirectory(newPath, sizeof(newPath), path); Path::Append(newPath, sizeof(newPath), newName); - Path::Append(newPath, sizeof(newPath), Path::GetExtension(path)); + String::Append(newPath, sizeof(newPath), Path::GetExtension(path)); if (platform_file_move(path, newPath)) { + item->Name = std::string(newName); item->Path = std::string(newPath); - SortItems(); - item = GetTrackItem(path); - if (item != nullptr) - { - result = item->Path.c_str(); - } + result = newPath; } } } diff --git a/src/windows/track_manage.c b/src/windows/track_manage.c index 1aa6319b4d..1f22d72b60 100644 --- a/src/windows/track_manage.c +++ b/src/windows/track_manage.c @@ -139,6 +139,7 @@ static rct_window_event_list window_track_delete_prompt_events = { static track_design_file_ref *_trackDesignFileReference; static void window_track_delete_prompt_open(); +static void window_track_design_list_reload_tracks(); /** * @@ -231,6 +232,7 @@ static void window_track_manage_textinput(rct_window *w, int widgetIndex, char * if (track_repository_rename(_trackDesignFileReference->path, text)) { window_close_by_class(WC_TRACK_DELETE_PROMPT); window_close(w); + window_track_design_list_reload_tracks(); } else { window_error_open(STR_CANT_RENAME_TRACK_DESIGN, STR_ANOTHER_FILE_EXISTS_WITH_NAME_OR_FILE_IS_WRITE_PROTECTED); } @@ -294,6 +296,7 @@ static void window_track_delete_prompt_mouseup(rct_window *w, int widgetIndex) window_close(w); if (track_repository_delete(_trackDesignFileReference->path)) { window_close_by_class(WC_MANAGE_TRACK_DESIGN); + window_track_design_list_reload_tracks(); } else { window_error_open(STR_CANT_DELETE_TRACK_DESIGN, STR_FILE_IS_WRITE_PROTECTED_OR_LOCKED); } @@ -324,3 +327,11 @@ static void window_track_delete_prompt_paint(rct_window *w, rct_drawpixelinfo *d 0 ); } + +static void window_track_design_list_reload_tracks() +{ + rct_window * trackListWindow = window_find_by_class(WC_TRACK_DESIGN_LIST); + if (trackListWindow != NULL) { + trackListWindow->track_list.reload_track_designs = true; + } +}