Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. bool UCitadelGameplayStatics::SetFocusOnFirstFocuseableChild(class UUserWidget* Widget)
  2. {
  3. if (!Widget || !Widget->GetIsEnabled() || !Widget->WidgetTree || Widget->GetVisibility() == ESlateVisibility::Collapsed || Widget->GetVisibility() == ESlateVisibility::Hidden)
  4. {
  5. return false;
  6. }
  7.  
  8. UWidget* RootWidget = Widget->GetRootWidget();
  9. if (RootWidget && RootWidget->GetVisibility() != ESlateVisibility::Collapsed && RootWidget->GetVisibility() != ESlateVisibility::Hidden)
  10. {
  11. TSharedRef<SWidget> RootSWidget = RootWidget->TakeWidget();
  12. if (RootSWidget.Get().SupportsKeyboardFocus() && RootWidget->GetIsEnabled())
  13. {
  14. RootWidget->SetKeyboardFocus();
  15. if (RootWidget->HasKeyboardFocus())
  16. {
  17. return true;
  18. }
  19. }
  20. }
  21.  
  22. TArray<UWidget*> Widgets;
  23. UWidgetTree::GetChildWidgets(Widget->WidgetTree->RootWidget, Widgets);
  24. for (UWidget* ChildWidget : Widgets)
  25. {
  26. if (!ChildWidget || ChildWidget->GetVisibility() == ESlateVisibility::Collapsed || ChildWidget->GetVisibility() == ESlateVisibility::Hidden)
  27. {
  28. continue;
  29. }
  30.  
  31. UUserWidget* ChildUserWidget = Cast<UUserWidget>(ChildWidget);
  32. if (SetFocusOnFirstFocuseableChild(ChildUserWidget))
  33. {
  34. return true;
  35. }
  36.  
  37. TSharedRef<SWidget> ChildSWidget = ChildWidget->TakeWidget();
  38. if (ChildSWidget.Get().SupportsKeyboardFocus() && ChildWidget->GetIsEnabled())
  39. {
  40. Debug::Log("Setting focus on widget: " + ChildWidget->GetName(), true);
  41.  
  42. ChildWidget->SetKeyboardFocus();
  43. if (ChildWidget->HasKeyboardFocus())
  44. {
  45. return true;
  46. }
  47. }
  48. }
  49.  
  50. return false;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement