You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
This change makes it possible to remove the layout and painting overhead that Slate performs every frame. The system is off by default as we continue to iterate on it. However, this includes massive changes to batching, rendering, hit testing, and invalidation panels which are permanent changes and cannot be disabled. #rb chris.gagnon, nick.darnell [CODEREVIEW] nick.darnell #ROBOMERGE-OWNER: ben.marsh #ROBOMERGE-AUTHOR: matt.kuhlenschmidt #ROBOMERGE-SOURCE: CL 7232617 via CL 7235502 via CL 7235503 #ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v371-7306989) [CL 7331494 by matt kuhlenschmidt in Dev-Build branch]
67 lines
1.3 KiB
C++
67 lines
1.3 KiB
C++
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "SlotBase.h"
|
|
#include "Widgets/SWidget.h"
|
|
#include "Widgets/SNullWidget.h"
|
|
|
|
FSlotBase::FSlotBase()
|
|
: RawParentPtr(nullptr)
|
|
, Widget( SNullWidget::NullWidget )
|
|
{
|
|
|
|
}
|
|
|
|
FSlotBase::FSlotBase( const TSharedRef<SWidget>& InWidget )
|
|
: RawParentPtr(nullptr)
|
|
, Widget( InWidget )
|
|
{
|
|
|
|
}
|
|
|
|
const TSharedPtr<SWidget> FSlotBase::DetachWidget()
|
|
{
|
|
if (Widget != SNullWidget::NullWidget)
|
|
{
|
|
Widget->ConditionallyDetatchParentWidget(RawParentPtr);
|
|
|
|
// Invalidate Prepass?
|
|
|
|
const TSharedRef<SWidget> MyExWidget = Widget;
|
|
Widget = SNullWidget::NullWidget;
|
|
return MyExWidget;
|
|
}
|
|
else
|
|
{
|
|
// Nothing to detach!
|
|
return TSharedPtr<SWidget>();
|
|
}
|
|
}
|
|
|
|
void FSlotBase::DetatchParentFromContent()
|
|
{
|
|
if (Widget != SNullWidget::NullWidget)
|
|
{
|
|
Widget->ConditionallyDetatchParentWidget(RawParentPtr);
|
|
}
|
|
}
|
|
|
|
void FSlotBase::AfterContentOrOwnerAssigned()
|
|
{
|
|
if (RawParentPtr)
|
|
{
|
|
if (Widget != SNullWidget::NullWidget)
|
|
{
|
|
// TODO NDarnell I want to enable this, but too many places in the codebase
|
|
// have made assumptions about being able to freely reparent widgets, while they're
|
|
// still connected to an existing hierarchy.
|
|
//ensure(!Widget->IsParentValid());
|
|
Widget->AssignParentWidget(RawParentPtr->AsShared());
|
|
}
|
|
}
|
|
}
|
|
|
|
FSlotBase::~FSlotBase()
|
|
{
|
|
DetatchParentFromContent();
|
|
}
|