I did it!
What I modified is this: (UE version is 4.23)
From TabManager.cpp ( \Engine\Source\Runtime\Slate\Private\Framework\Docking\TabManager.cpp )
in TSharedRef FTabManager::RestoreArea_Helper()
I found below source,
// Any windows that were "pulled out" of a dock area should be children of the window in which the parent dock area resides.
if (bIsChildWindow)
{
FSlateApplication::Get().AddWindowAsNativeChild( NewWindow, ParentWindow.ToSharedRef() )->SetContent(
SAssignNew( NewDockAreaWidget, SDockingArea, SharedThis(this), NodeAsArea.ToSharedRef() ) .ParentWindow( NewWindow )
);
}
else
{
FSlateApplication::Get().AddWindow( NewWindow )->SetContent(
SAssignNew( NewDockAreaWidget, SDockingArea, SharedThis(this), NodeAsArea.ToSharedRef() ) .ParentWindow( NewWindow )
);
}
And I modified like this: (just copy and past from line under else{ )
// Any windows that were "pulled out" of a dock area should be children of the window in which the parent dock area resides.
if (bIsChildWindow)
{
//FSlateApplication::Get().AddWindowAsNativeChild( NewWindow, ParentWindow.ToSharedRef() )->SetContent(
// SAssignNew( NewDockAreaWidget, SDockingArea, SharedThis(this), NodeAsArea.ToSharedRef() ) .ParentWindow( NewWindow )
//);
FSlateApplication::Get().AddWindow(NewWindow)->SetContent(
SAssignNew(NewDockAreaWidget, SDockingArea, SharedThis(this), NodeAsArea.ToSharedRef()).ParentWindow(NewWindow)
);
}
else
{
FSlateApplication::Get().AddWindow( NewWindow )->SetContent(
SAssignNew( NewDockAreaWidget, SDockingArea, SharedThis(this), NodeAsArea.ToSharedRef() ) .ParentWindow( NewWindow )
);
}
Then it works! How sweet!!! Thank you!