This paves the way for a flickering fix of the main menus when widgets are shared between widgets where I will move the responsibility for creating widgets into the tab manager. In the tab manager, the main menu widgets will be created per window behind the scenes. Therefore, we cannot return a widget from these methods because there might be more than one and they haven't been created yet.
* Private API changes: Change the return type from TSharedRef/Ptr<SWidget> to void on various private API MakeMainMenu methods (of FLevelEditorMenu, FMainFrameModule, FMainMenu, and SStandaloneAssetEditorToolkitHost).
* Public API change: Add new method void IMainFrameModule::MakeMainMenuNoWidget.
* Public API change: Deprecate the method TSharedRef<SWidget> IMainFrameModule::MakeMainMenu and provide a default implementation for the time being that calls MakeMainMenuNoWidget.
#jira UE-183373
#rb brooke.hubert
[CL 28710510 by sebastian arleryd in ue5-main branch]
Switching over the project browser dialog to use the new system.
#rb Lauren.Barnes
#preflight 63293e08b40000c8f04da02a
#preflight 6329eb72fc7f1efbdf479b84
[CL 22100188 by Mike Beach in ue5-main branch]
LIMITATIONS:
1) Re-instancing will only update UClass instance data.
2) Adding and removing properties should only be done towards the end of a class or structure and can not be followed by complex data types.
3) Adding and removing properties from a base class should not be done if a derived class contains complex data types.
KNOWN ISSUES:
1) Changes to enumerations and structures will not be reflected in existing blueprints. However, adding new nodes to the blueprint will show the updated enumeration or structure.
2) If a class contains an enumeration or structure as a member, the class will not be re-instanced if enumeration or structure is changed.
CHANGES:
1) LiveCodingServer
1a) Modified to always execute certain static instances during load.
1b) Modified to exclude the _Statics static structures to avoid patching to old copies.
2) Added support for LiveCoding reinstancing
2a) Refactored deferred registration system for UClass, UEnum, and UScriptStruct to use a common system that works for normal game, hot reload and live coding.
2b) Type specific version check data is possible (i.e. enum doesn't have a size)
2c) Single registration static for UClass
2d) Single registration class for all types that is just a blind forward to API.
2e) Static and dynamic registrations use different API entry points to avoid having overloaded argument lists that just apply to one or the other.
2f) Shims for older API
3) New common "Reload" system to avoid using HotReload code.
3a) Support common delegates regardless of who is reloading/reinstancing.
3b) Re-instancing code moved from HotReload to Kismet2 (where the bulk of the re-instance code already existed).
3c) Modified PyWrapper to use new helper class instead of depending on HotRelaod
3d) Added WITH_RELOAD which is defined if HotReload or LiveCoding is enabled.
3e) Modifed existing code to use new #define and delegates.
Robert did the review on the changes covered by Part 2. Remaining changes are all straightforward.
#rb robert.manuszewski
#jira UE-74493
[CL 15736777 by Tim Smith in ue5-main branch]
Editor layout system: If there is a version bump in the layout system, it used to show a message dialog always. Behavior modified.
If the load request comes from the "Load" UI button, it keep displaying a message dialog to warn the user (and a UELOG(Warning)). If it's from the editor startup, it will only show the UE_LOG(Warning).
Also modified the default layout with the new version.
#rb none
[CL 15307798 by Gines Hidalgo in ue5-main branch]
#rb chris.gagnon
#ROBOMERGE-SOURCE: CL 11672298 via CL 11672319 via CL 11672336
#ROBOMERGE-BOT: (v656-11643781)
[CL 11863430 by rex hill in Main branch]
Added new IMainFrame module interface function to override the application title.
IMainFrameModule::SetOverrideApplicationTitle(FText)
#ROBOMERGE-SOURCE: CL 10996086 via CL 10996091 via CL 10996095
#ROBOMERGE-BOT: (v633-10983880)
[CL 10996097 by mike fricker in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870586 by ryan durand in Main branch]
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]