TSharedPtr<SDockTab> FDocumentTracker::OpenNewTab(TSharedPtr<FTabPayload> InPayload, EOpenDocumentCause InOpenCause) { ensure(InOpenCause == ForceOpenNewDocument ||InOpenCause == OpenNewDocument || InOpenCause == RestorePreviousDocument); TSharedPtr<FDocumentTabFactory> Factory = FindSupportingFactory(InPayload.ToSharedRef()); TSharedPtr<SDockTab> NewTab; if(Factory.IsValid()) { TSharedPtr<FAssetEditorToolkit> HostingApp = HostingAppPtr.Pin(); FWorkflowTabSpawnInfo SpawnInfo; SpawnInfo.Payload = InPayload; NewTab = Factory->SpawnBlankTab(); TSharedPtr<FTabInfo> NewTabInfo = MakeShareable( new FTabInfo(NewTab.ToSharedRef(), Factory) ); SpawnedTabs.Add( NewTabInfo ); NewTabInfo->AddTabHistory(Factory->CreateTabHistoryNode(InPayload)); if (InOpenCause == ForceOpenNewDocument || InOpenCause == OpenNewDocument) { TabManager->InsertNewDocumentTab( "Document", FTabManager::ESearchPreference::RequireClosedTab, NewTab.ToSharedRef() ); } else if (InOpenCause == RestorePreviousDocument) { TabManager->RestoreDocumentTab( "Document", FTabManager::ESearchPreference::RequireClosedTab, NewTab.ToSharedRef() ); } } return NewTab; }