From 0ccd90cdd87e2234f2829144a94aa81f791fe8d4 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Tue, 2 Jan 2024 17:57:41 +0000 Subject: [PATCH] Return the slot from InsertChildWidgetAt --- Source/StevesUEHelpers/Private/StevesBPL.cpp | 4 ++-- Source/StevesUEHelpers/Public/StevesBPL.h | 4 +++- Source/StevesUEHelpers/Public/StevesUiHelpers.cpp | 7 ++++--- Source/StevesUEHelpers/Public/StevesUiHelpers.h | 3 ++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Source/StevesUEHelpers/Private/StevesBPL.cpp b/Source/StevesUEHelpers/Private/StevesBPL.cpp index ea0ebf1..608cff8 100644 --- a/Source/StevesUEHelpers/Private/StevesBPL.cpp +++ b/Source/StevesUEHelpers/Private/StevesBPL.cpp @@ -11,9 +11,9 @@ void UStevesBPL::SetWidgetFocus(UWidget* Widget) SetWidgetFocusProperly(Widget); } -void UStevesBPL::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex) +UPanelSlot* UStevesBPL::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex) { - StevesUiHelpers::InsertChildWidgetAt(Parent, Child, AtIndex); + return StevesUiHelpers::InsertChildWidgetAt(Parent, Child, AtIndex); } FStevesBalancedRandomStream UStevesBPL::MakeBalancedRandomStream(int64 Seed) diff --git a/Source/StevesUEHelpers/Public/StevesBPL.h b/Source/StevesUEHelpers/Public/StevesBPL.h index 22eecdc..0871369 100644 --- a/Source/StevesUEHelpers/Public/StevesBPL.h +++ b/Source/StevesUEHelpers/Public/StevesBPL.h @@ -6,6 +6,7 @@ #include "StevesBalancedRandomStream.h" #include "StevesMathHelpers.h" +#include "Components/PanelSlot.h" #include "StevesBPL.generated.h" class UPanelWidget; @@ -51,9 +52,10 @@ public: * @param Parent The container widget * @param Child The child widget to add * @param AtIndex The index at which the new child should exist + * @returns The slot the child was inserted at */ UFUNCTION(BlueprintCallable, Category="StevesUEHelpers|UI") - static void InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex = 0); + static UPanelSlot* InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex = 0); UFUNCTION(BlueprintPure, Category="StevesUEHelpers|Random", meta=(NativeMakeFunc)) static FStevesBalancedRandomStream MakeBalancedRandomStream(int64 Seed); diff --git a/Source/StevesUEHelpers/Public/StevesUiHelpers.cpp b/Source/StevesUEHelpers/Public/StevesUiHelpers.cpp index 1d96d56..814c1a3 100644 --- a/Source/StevesUEHelpers/Public/StevesUiHelpers.cpp +++ b/Source/StevesUEHelpers/Public/StevesUiHelpers.cpp @@ -2,7 +2,7 @@ #include "Components/PanelWidget.h" -void StevesUiHelpers::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex) +UPanelSlot* StevesUiHelpers::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex) { checkf(AtIndex <= Parent->GetChildrenCount(), TEXT("Insertion index %d is greater than child count"), AtIndex); @@ -10,7 +10,7 @@ void StevesUiHelpers::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, const int OrigCount = Parent->GetChildrenCount(); if (OrigCount == AtIndex) { - Parent->AddChild(Child); + return Parent->AddChild(Child); } else { @@ -32,12 +32,13 @@ void StevesUiHelpers::InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, Parent->RemoveChildAt(i); } // insert item - Parent->AddChild(Child); + auto Slot = Parent->AddChild(Child); // add back previous, reverse order for (int i = WidgetsToReplaceReversed.Num() - 1; i >= 0; --i) { Parent->AddChild(WidgetsToReplaceReversed[i]); } + return Slot; } diff --git a/Source/StevesUEHelpers/Public/StevesUiHelpers.h b/Source/StevesUEHelpers/Public/StevesUiHelpers.h index aa9ab4b..9720499 100644 --- a/Source/StevesUEHelpers/Public/StevesUiHelpers.h +++ b/Source/StevesUEHelpers/Public/StevesUiHelpers.h @@ -12,6 +12,7 @@ public: * @param Parent The container widget * @param Child The child widget to add * @param AtIndex The index at which the new child should exist + * @returns The slot the child was inserted at */ - static void InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex = 0); + static UPanelSlot* InsertChildWidgetAt(UPanelWidget* Parent, UWidget* Child, int AtIndex = 0); };