#rb aditya.ravichandran
the pre flight is actually 662bc15be774eebeff65c9a2
#jira none
#ushell-cherrypick of 33262528 by kristof.morva1
[CL 33267213 by ben hoffman in ue5-main branch]
The issue was that we were destroying all windows before giving a change to the tab manager to properly close them.
#jira UE-211855
#rb aditya.ravichandran
[CL 32919999 by sergio gardeazabal in ue5-main branch]
[REVIEW] [at]aditya.ravichandran
#tests Launched with PIE and a bunch of asset windows open from last run
#rb aditya.ravichandran
[CL 30357347 by christian savoie in ue5-main branch]
* Add FTabManager::SetGeneratePerWindowMainMenuDelegate that allows users to set a delegate the tab manager calls when it needs a main menu widget for a tab's window. This way we can avoid drawing the same main menu widget in multiple windows and the flickering that can cause.
* Generated main menu widgets are cached and reused to avoid regenerating widgets for the same tab manager and window combination. FSlateApplication::OnWindowBeingDestroyed is used to clean this cache up as windows are destroyed.
* The old method FTabManager::SetMenuMultiBox to set a main menu widget for a tab manager now uses FTabManager::SetGeneratePerWindowMainMenuDelegate behind the scenes.
* Update FMainMenu::MakeMainMenu to use the new FTabManager::SetGeneratePerWindowMainMenuDelegate to avoid the main menu flickering described in this ticket.
* Remove unused code.
#jira UE-183373
#rb brooke.hubert, Matt.Kuhlenschmidt, aditya.ravichandran
[CL 29179083 by sebastian arleryd in ue5-main branch]
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]
Note: Workspace Menus is the name of the menu hierarchy created by tab spawners.
The intent here is to give stable section and sub-menu names to the main menu hierarchy created by tab spawners to allow anyone to extend said hierarchy using UToolMenus.
* Add a NameAttribute to FWorkspaceItem which is NAME_None by default. Allow NameAttribute to be set through constructors and the NewGroup and AddGroup methods. Add an FWorkspaceItem::GetFName method for fetching NameAttribute.
* Set the NameAttribute of FWorkspaceItems created for tab spawners using their TabType.
* When adding tab spawners to the main menus, set the FName identifier as appropriate on sections and sub-menus with the value returned by FWorkspaceItem::GetFName.
* Set the NameAttribute on a lot of workspace groups to make use of this new functionality.
#jira UE-186967
[REVIEW] [at]editor-ux [at]editor-framework
#rb brooke.hubert
[CL 28416011 by sebastian arleryd in ue5-main branch]
This avoids the auto-save restore prompt appearing if the editor crashes after the user has already opted to discard their pending changes during shutdown
[FYI] Scott.Clifford
#rb Rex.Hill
[CL 28379316 by jamie dale in ue5-main branch]
This change only affects the main menu entries added by MainMenu.cpp under "MainFrame.MainMenu.Edit", "MainFrame.MainMenu.Window", and "MainFrame.MainMenu.Tools". See the header "Acceptance Criteria WM-1" in https://docs.google.com/document/d/1xZsXdaa3CgIYYmKbZzEUuAbnjgqbV53Qdtax_RbVBLs for an example of what can change in these dynamic menus.
#jira UE-181389
#preflight 644828ebfa6ba3cc5b5ef00b
[CL 25187872 by sebastian arleryd in ue5-main branch]
- Normalize the layout file paths as the config cache expects them to be.
- Removed the ConvertToAbsolutePathForExternalAppForRead call since the config cache expects relatives paths and it generates an unusable path if the platform file is IPlatformPakFile.
#jira UE-148371
#tests Validated that this works with cooked editors that use the IPlatformPakFile.
#rb lauren.barnes
#preflight 6426eb0b50546ea336ae674a
[CL 24871001 by JeanMichel Dignard in ue5-main branch]