Description

This is not a regression. Tested in //UE5/Release-5.2 CL26001984

A widget that is a derived from a child widget reports component variables as Invalid, while the child and parent of that child will report their component variables as valid.

Steps to Reproduce
  1. Create or open any project
  2. Create a new Widget Blueprint named "Parent
    • Right click in the Content Browser then select User Interface > Widget Blueprint then select User Widget
    • Name the widget "Parent"
    • Open the widget by double clicking
  3. Add a Named Slot to the widget 
    • In the widget Designer search the Palette tab for a Named Slot then drag it to the Hierarchy tab
  4. Compile, save, and close the widget
  5. Create a new Widget Blueprint derived from Parent widget then name it "Child1"
    • Right click in the Content Browser then select User Interface > Widget Blueprint then expand the All Classes drop down and search for and select Parent
    • Name the widget "Child1"
    • Open the widget by double clicking
  6. Add a Named Slot to the widget's Hierarchy under the parent's Named Slot
    • In the widget Designer search the Palette tab for a Named Slot then drag it on to the Named Slot that is already in the Hierarchy tab
  7. Compile, save, and close the widget
  8. Create a new Widget Blueprint named "Child2"
    • Right click in the Content Browser then select User Interface > Widget Blueprint then expand the All Classes drop down and search for and select Child1
    • Name the widget "Child2"
    • Open the widget by double clicking
  9. Add a Button(or any component) to the widget's Hierarchy under the parent's Named Slot
    • In the widget Designer search the Palette tab for a Button then drag it on to the Named Slot that is already in the Hierarchy tab
  10. Select the Button in the Hierarchy then in the Details panel enable Is Variable
  11. In the Graph Editor get a reference of the Button by ctrl + left click dragging the Button variable into the graph
  12. Drag off the Button's output pin then search for and create an Is Valid node(F IsValid, not ? IsValid)
  13. Drag off of the Parent: Tick node's output execution pin and create a Print String node
  14. Connect the Is Valid node to the In String input pin of the Print String node
  15. Compile, save, and close the widget
  16. Open the Level Blueprint 
    • Select the Blueprint Icon beneath the Main Menu Bar then select Open Level Blueprint
  17.  Drag off the output execution pin of Event BeginPlay then create a Create Widget node
  18. Set the Class  to Child2
  19. Set the Owning Player to the Player Controller
    • Right clicking in the graph then search for and select Get Player Controller
    • Connect the Return Value to the Owning Player input pin
  20. Drag off the Create Widget node's Return Value output pin then create an Add to Viewport node
  21. Connect the Create Widget node's output execution pin to the Add to Viewport node's input execution pin
  22. Compile, save, and close the blueprint
  23. Play in Editor

Expected Results:

The Button is considered valid and True is printed to the screen each tick.

Actual Results:

The Button is visible, interactable, but is considered invalid with False being printed to the screen each tick.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-193748 in the post.

1
Login to Vote

Fixed
ComponentUE - Editor - UI Systems
Affects Versions5.3
Target Fix5.4
Fix Commit29779035
Main Commit29779035
CreatedAug 23, 2023
ResolvedNov 16, 2023
UpdatedDec 5, 2023