Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool UCitadelGameplayStatics::SetFocusOnFirstFocuseableChild(class UUserWidget* Widget)
- {
- if (!Widget || !Widget->GetIsEnabled() || !Widget->WidgetTree || Widget->GetVisibility() == ESlateVisibility::Collapsed || Widget->GetVisibility() == ESlateVisibility::Hidden)
- {
- return false;
- }
- UWidget* RootWidget = Widget->GetRootWidget();
- if (RootWidget && RootWidget->GetVisibility() != ESlateVisibility::Collapsed && RootWidget->GetVisibility() != ESlateVisibility::Hidden)
- {
- TSharedRef<SWidget> RootSWidget = RootWidget->TakeWidget();
- if (RootSWidget.Get().SupportsKeyboardFocus() && RootWidget->GetIsEnabled())
- {
- RootWidget->SetKeyboardFocus();
- if (RootWidget->HasKeyboardFocus())
- {
- return true;
- }
- }
- }
- TArray<UWidget*> Widgets;
- UWidgetTree::GetChildWidgets(Widget->WidgetTree->RootWidget, Widgets);
- for (UWidget* ChildWidget : Widgets)
- {
- if (!ChildWidget || ChildWidget->GetVisibility() == ESlateVisibility::Collapsed || ChildWidget->GetVisibility() == ESlateVisibility::Hidden)
- {
- continue;
- }
- UUserWidget* ChildUserWidget = Cast<UUserWidget>(ChildWidget);
- if (SetFocusOnFirstFocuseableChild(ChildUserWidget))
- {
- return true;
- }
- TSharedRef<SWidget> ChildSWidget = ChildWidget->TakeWidget();
- if (ChildSWidget.Get().SupportsKeyboardFocus() && ChildWidget->GetIsEnabled())
- {
- Debug::Log("Setting focus on widget: " + ChildWidget->GetName(), true);
- ChildWidget->SetKeyboardFocus();
- if (ChildWidget->HasKeyboardFocus())
- {
- return true;
- }
- }
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement