From 4f25ffed56f3cdfb1d9daff7e4e640a62ac5c55e Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Wed, 26 Jun 2024 11:08:58 +0100 Subject: [PATCH] Update option widget buttons on AddOption --- .../Private/StevesUI/OptionWidgetBase.cpp | 24 +++++++++++++++---- .../Public/StevesUI/OptionWidgetBase.h | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Source/StevesUEHelpers/Private/StevesUI/OptionWidgetBase.cpp b/Source/StevesUEHelpers/Private/StevesUI/OptionWidgetBase.cpp index 1022d63..8072c4b 100644 --- a/Source/StevesUEHelpers/Private/StevesUI/OptionWidgetBase.cpp +++ b/Source/StevesUEHelpers/Private/StevesUI/OptionWidgetBase.cpp @@ -165,6 +165,15 @@ void UOptionWidgetBase::SetSelectedIndex(int NewIndex) if (GamepadText) GamepadText->SetText(NewText); + UpdateUpDownButtons(); + + if (bRaiseEvent) + OnSelectedOptionChanged.Broadcast(this, SelectedIndex); + +} + +void UOptionWidgetBase::UpdateUpDownButtons() +{ const bool CanDecrease = SelectedIndex > 0; const bool CanIncrease = SelectedIndex < Options.Num() - 1; if (MouseDownButton) @@ -175,15 +184,22 @@ void UOptionWidgetBase::SetSelectedIndex(int NewIndex) GamepadDownImage->SetVisibility(CanDecrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden); if (GamepadUpImage) GamepadUpImage->SetVisibility(CanIncrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden); - - if (bRaiseEvent) - OnSelectedOptionChanged.Broadcast(this, SelectedIndex); } + int UOptionWidgetBase::AddOption(FText Option) { - return Options.Add(Option); + const int Ret = Options.Add(Option); + if (GetSelectedIndex() == -1) + { + SetSelectedIndex(0); + } + else + { + UpdateUpDownButtons(); + } + return Ret; } void UOptionWidgetBase::SetOptions(const TArray& InOptions, int NewSelectedIndex) diff --git a/Source/StevesUEHelpers/Public/StevesUI/OptionWidgetBase.h b/Source/StevesUEHelpers/Public/StevesUI/OptionWidgetBase.h index 586cbec..4e2e901 100644 --- a/Source/StevesUEHelpers/Public/StevesUI/OptionWidgetBase.h +++ b/Source/StevesUEHelpers/Public/StevesUI/OptionWidgetBase.h @@ -111,6 +111,7 @@ protected: virtual void ChangeOption(int Delta); UFUNCTION(BlueprintCallable) virtual EInputMode GetCurrentInputMode() const; + virtual void UpdateUpDownButtons(); protected: