mirror of https://github.com/OpenRCT2/OpenRCT2.git
Fix EditorObjectSelection opening of TrackManager
Calling `Close()` on a window deletes its object, rendering any future uses of its members invalid. In this case `WindowsCloseAll` closed Editor window itself rendering call to `ManageTracks` on a deleted pointer. Previously `WindowsCloseAll` was called, but earlier in the same function we have already closed all windows but Editor itself. It is sufficient to close the editor once we have opened `TrackDesignList`. When this got fixed, I noticed `TrackDesignList` could not locate any rides, which was happening due to calls to `ObjectManager::UnloadAll` in several places. Code to load the selected ride back was added.
This commit is contained in:
parent
1670de0a4e
commit
be82582063
|
@ -599,12 +599,14 @@ public:
|
||||||
if (!objectSelectResult.Successful)
|
if (!objectSelectResult.Successful)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Close any other open windows such as options/colour schemes to prevent a crash.
|
auto& objRepository = OpenRCT2::GetContext()->GetObjectRepository();
|
||||||
WindowCloseAll();
|
_loadedObject = objRepository.LoadObject(listItem->repositoryItem);
|
||||||
// WindowClose(*w);
|
auto& objManager = OpenRCT2::GetContext()->GetObjectManager();
|
||||||
|
objManager.LoadObject(_loadedObject.get()->GetIdentifier());
|
||||||
|
|
||||||
// This function calls window_track_list_open
|
// This function calls window_track_list_open
|
||||||
ManageTracks();
|
ManageTracks();
|
||||||
|
Close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue