Using AddSP to bind onto a multicast delegate that's removed in a class's destructor is dangerous because the weak pointer used to compare against the 'this' pointer passed to .RemoveAll() will be invalid by the time it is compared. This causes "HasSameObject" to fail as the object cannot be pinned. I've have changed these to be raw bindings so that the ownership is explicit and thus force the call to RemoveAll to succeed correctly without leaving behind a null delegate instance. Previously, with a null delegate instance still in the list when the module is reloaded, that memory becomes invalid causing a crash when the event attempts to purge invalid delegate instances from its invocation list.
Also fixed one place where OnTakeHighResScreenShots was being bound but never removed (this looked like a copy paste error)
This addresses TTP#337596 - CRASH: EDITOR: Reload after Recompile causes crash
#codereview Max.Preussner
[CL 2108007 by Andrew Rodham in Main branch]
I also added code to retain backwards compatibility. Existing settings from EditorUserSettings.ini will be migrated to EditorLayout.ini
#CodeReview: nick.atamas, matt.kuhlenschmidt
[CL 2074798 by Max Preussner in Main branch]
Splitted World Browser views into three independent windows, each window can be summoned from a hierarchy view or details view toolbar
World composition can now be toggled through WorldSettings - bEnableWorldComposition. Once enabled persistent level will be treated as a world root. No more '?worldcompistion' parameter workarounds. 'Open World' command was removed, as levels saved with world composition enabled can be open through 'Open Level' command.
Added bEnableWorldOriginRebasing parameter to WorldSettings, which contols whether world origin shifting should be used
[CL 2072584 by Dmitriy Dyomin in Main branch]
#branch UE4
#proj Editor
#summary Removed position based menu actions from the scene outliner context menu
#change FLevelViewportContextMenu has been renamed to FLevelEditorContextMenu as it is not actually specific to viewports (it has been used in the scene outliner for some time now)
#change Added an enum to specify a broad context for the level editor context menu (whether it should show position based menu actions or not)
#reviewedby Matt.Kuhlenschmidt
[CL 2041433 by Andrew Rodham in Main branch]
This tidys up some logic and duplication between the level editor viewport context menu and the scene outliner, since the level viewport menu can now extend the scene outliner, rather than having to duplicate its functionality. The ability to completely override the menu still remains by way of an override delegate.
#reviewedby Matt.Kuhlenschmidt
[CL 2038566 by Andrew Rodham in Main branch]