Update option widget buttons on AddOption

This commit is contained in:
Steve Streeting 2024-06-26 11:08:58 +01:00
parent d3045cc463
commit 4f25ffed56
2 changed files with 21 additions and 4 deletions

View File

@ -165,6 +165,15 @@ void UOptionWidgetBase::SetSelectedIndex(int NewIndex)
if (GamepadText) if (GamepadText)
GamepadText->SetText(NewText); GamepadText->SetText(NewText);
UpdateUpDownButtons();
if (bRaiseEvent)
OnSelectedOptionChanged.Broadcast(this, SelectedIndex);
}
void UOptionWidgetBase::UpdateUpDownButtons()
{
const bool CanDecrease = SelectedIndex > 0; const bool CanDecrease = SelectedIndex > 0;
const bool CanIncrease = SelectedIndex < Options.Num() - 1; const bool CanIncrease = SelectedIndex < Options.Num() - 1;
if (MouseDownButton) if (MouseDownButton)
@ -175,15 +184,22 @@ void UOptionWidgetBase::SetSelectedIndex(int NewIndex)
GamepadDownImage->SetVisibility(CanDecrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden); GamepadDownImage->SetVisibility(CanDecrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden);
if (GamepadUpImage) if (GamepadUpImage)
GamepadUpImage->SetVisibility(CanIncrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden); GamepadUpImage->SetVisibility(CanIncrease ? ESlateVisibility::Visible : ESlateVisibility::Hidden);
if (bRaiseEvent)
OnSelectedOptionChanged.Broadcast(this, SelectedIndex);
} }
int UOptionWidgetBase::AddOption(FText Option) 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<FText>& InOptions, int NewSelectedIndex) void UOptionWidgetBase::SetOptions(const TArray<FText>& InOptions, int NewSelectedIndex)

View File

@ -111,6 +111,7 @@ protected:
virtual void ChangeOption(int Delta); virtual void ChangeOption(int Delta);
UFUNCTION(BlueprintCallable) UFUNCTION(BlueprintCallable)
virtual EInputMode GetCurrentInputMode() const; virtual EInputMode GetCurrentInputMode() const;
virtual void UpdateUpDownButtons();
protected: protected: