Set focus correctly on Custom Button

This commit is contained in:
baz 2025-09-02 22:14:52 +01:00
parent 8fba6df0db
commit 1fea57b459
5 changed files with 15 additions and 5 deletions

BIN
Content/Widgets/BP_CustomButton.uasset (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

View File

@ -19,6 +19,8 @@ void UCustomButton::NativeConstruct()
ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered); ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonUnhovered); ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonUnhovered);
SetDesiredFocusWidget(ButtonBody);
SynchronizeProperties(); SynchronizeProperties();
} }
@ -39,7 +41,6 @@ void UCustomButton::SynchronizeProperties()
void UCustomButton::NativeOnAddedToFocusPath(const FFocusEvent& InFocusEvent) void UCustomButton::NativeOnAddedToFocusPath(const FFocusEvent& InFocusEvent)
{ {
Super::NativeOnAddedToFocusPath(InFocusEvent); Super::NativeOnAddedToFocusPath(InFocusEvent);
OnFocused.Broadcast(InFocusEvent); OnFocused.Broadcast(InFocusEvent);
OnButtonHovered(); OnButtonHovered();
} }

View File

@ -6,6 +6,7 @@
#include "CustomButton.h" #include "CustomButton.h"
#include "StarterWeaponButtonDataObject.h" #include "StarterWeaponButtonDataObject.h"
#include "StarterWeaponButtonWidget.h" #include "StarterWeaponButtonWidget.h"
#include "Components/Button.h"
#include "Components/ScrollBox.h" #include "Components/ScrollBox.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
@ -29,8 +30,14 @@ void USelectWeaponWidget::NativeConstruct()
Temp->SetData(Weapon, this); Temp->SetData(Weapon, this);
Widget->SetData(Temp); Widget->SetData(Temp);
StarterWeaponsScrollBox->AddChild(Widget); StarterWeaponsScrollBox->AddChild(Widget);
Buttons.Push(Widget);
} }
} }
if (Buttons.Num() > 0)
{
Buttons[0]->SetKeyboardFocus();
}
} }
} }

View File

@ -45,4 +45,6 @@ protected:
private: private:
UFUNCTION() UFUNCTION()
void BackButtonClicked(); void BackButtonClicked();
TArray<TObjectPtr<UStarterWeaponButtonWidget>> Buttons;
}; };