Files
UnrealEngineUWP/Engine/Source/Runtime/UMG/Private/Components/WidgetSwitcherSlot.cpp

79 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Components/WidgetSwitcherSlot.h"
#include "SlateFwd.h"
#include "Components/Widget.h"
/////////////////////////////////////////////////////
// UWidgetSwitcherSlot
UWidgetSwitcherSlot::UWidgetSwitcherSlot(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
, Slot(nullptr)
{
HorizontalAlignment = HAlign_Fill;
VerticalAlignment = VAlign_Fill;
}
void UWidgetSwitcherSlot::ReleaseSlateResources(bool bReleaseChildren)
{
Super::ReleaseSlateResources(bReleaseChildren);
Slot = nullptr;
}
void UWidgetSwitcherSlot::BuildSlot(TSharedRef<SWidgetSwitcher> WidgetSwitcher)
{
WidgetSwitcher->AddSlot()
.Expose(Slot)
.Padding(Padding)
.HAlign(HorizontalAlignment)
.VAlign(VerticalAlignment)
[
Content == nullptr ? SNullWidget::NullWidget : Content->TakeWidget()
];
}
void UWidgetSwitcherSlot::SetContent(UWidget* NewContent)
{
Content = NewContent;
if (Slot)
{
Slot->AttachWidget(NewContent ? NewContent->TakeWidget() : SNullWidget::NullWidget);
}
}
void UWidgetSwitcherSlot::SetPadding(FMargin InPadding)
{
Padding = InPadding;
if ( Slot )
{
Slot->SetPadding(InPadding);
}
}
void UWidgetSwitcherSlot::SetHorizontalAlignment(EHorizontalAlignment InHorizontalAlignment)
{
HorizontalAlignment = InHorizontalAlignment;
if ( Slot )
{
Slot->SetHorizontalAlignment(InHorizontalAlignment);
}
}
void UWidgetSwitcherSlot::SetVerticalAlignment(EVerticalAlignment InVerticalAlignment)
{
VerticalAlignment = InVerticalAlignment;
if ( Slot )
{
Slot->SetVerticalAlignment(InVerticalAlignment);
}
}
void UWidgetSwitcherSlot::SynchronizeProperties()
{
SetPadding(Padding);
SetHorizontalAlignment(HorizontalAlignment);
SetVerticalAlignment(VerticalAlignment);
}