More fixing everything
This commit is contained in:
@@ -18,6 +18,34 @@ UlxRootCanvasSlot::UlxRootCanvasSlot(const FObjectInitializer& ObjectInitializer
|
||||
SetOffsets(FMargin(0.0f, 0.0f, 0.0f, 0.0f));
|
||||
}
|
||||
|
||||
void UlxRootCanvasSlot::SetZOrderReliable(int32 Order)
|
||||
{
|
||||
if (SlotUnderConstruction)
|
||||
{
|
||||
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
||||
ZOrder = Order;
|
||||
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
||||
}
|
||||
else
|
||||
{
|
||||
SetZOrder(Order);
|
||||
}
|
||||
}
|
||||
|
||||
int32 UlxRootCanvasSlot::GetZOrderReliable()
|
||||
{
|
||||
if (SlotUnderConstruction)
|
||||
{
|
||||
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
||||
return ZOrder;
|
||||
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetZOrder();
|
||||
}
|
||||
}
|
||||
|
||||
UClass* UlxRootCanvasPanel::GetSlotClass() const
|
||||
{
|
||||
return UlxRootCanvasSlot::StaticClass();
|
||||
@@ -49,23 +77,11 @@ int32 UlxRootCanvasPanel::GetMaxZOrder() const
|
||||
{
|
||||
UlxRootCanvasSlot *TypedSlot = Cast<UlxRootCanvasSlot>(PanelSlot);
|
||||
check(TypedSlot);
|
||||
MaxZOrder = FMath::Max(MaxZOrder, TypedSlot->GetZOrder());
|
||||
MaxZOrder = FMath::Max(MaxZOrder, TypedSlot->GetZOrderReliable());
|
||||
}
|
||||
return MaxZOrder;
|
||||
}
|
||||
|
||||
void UlxRootCanvasPanel::PropagateZOrderToSlate()
|
||||
{
|
||||
if (!MustPropagateZOrderToSlate) return;
|
||||
MustPropagateZOrderToSlate = false;
|
||||
for (UPanelSlot *PanelSlot : Slots)
|
||||
{
|
||||
UlxRootCanvasSlot *TypedSlot = Cast<UlxRootCanvasSlot>(PanelSlot);
|
||||
check(TypedSlot);
|
||||
TypedSlot->SetZOrder(TypedSlot->GetZOrder());
|
||||
}
|
||||
}
|
||||
|
||||
TArray<UlxRootCanvasSlot*> UlxRootCanvasPanel::GetSortedUserWidgets()
|
||||
{
|
||||
TArray<UlxRootCanvasSlot*> Result;
|
||||
@@ -105,17 +121,6 @@ void UlxRootCanvasPanel::SetWidgetWindowManagement(class UUserWidget *Widget,
|
||||
Slot->BlockInput = BlockInput;
|
||||
Slot->EnableEnhancedInput = EnableEnhancedInput;
|
||||
Widget->SetDesiredFocusWidget(DesiredFocusWidget);
|
||||
if (BringToFront)
|
||||
{
|
||||
// Write the int32 ZOrder UPROPERTY directly and defer the
|
||||
// Slate-side push to PropagateZOrderToSlate. Going through SetZOrder
|
||||
// here is unsafe when called from Event Construct: the FSlot
|
||||
// has been Exposed but its Owner isn't set yet, which fires
|
||||
// an ensure in SConstraintCanvas::FSlot::SetZOrder.
|
||||
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
||||
Slot->ZOrder = Panel->GetMaxZOrder() + 1;
|
||||
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
||||
Panel->MustPropagateZOrderToSlate = true;
|
||||
}
|
||||
if (BringToFront) Slot->SetZOrderReliable(Panel->GetMaxZOrder() + 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user