When updating an user widget blueprint property, it’s instances in another user widget OR child classes are not updated.
Posting this publically to help others that encounter this issue.
I’ll list down some workarounds below, but in terms of working and reusing widgets in any capacity this needs to be fixed. If you’re working with widgets I highly recommend reading through this so you don’t “corrupt” your widgets.
Issue
This issue equally affects both inheriting a user widget through blueprints, and dragging in an instance to another user widget. Specifically, if you edit a property through the UMG editor it will not propagate.
These actions will not fix the issue either (as of 5.4.3)
- Widget Blueprint > Compile
- Restarting the Editor
- Reloading any of the related widget assets (eg. Right Click > Asset Actions > Reload) (see UMG changes to user widgets not updating instances)
Don’t edit stuff here
Editing child component properties appears to be safe (eg. Size Box or Button in the screenshot).
Repro
Inheritance
- Create user widget “WBP_Parent”
- Create user widget “WBP_Child” inheriting off “WBP_Parent”
- In “WBP_Parent”, change any property like “Is Focusable” or “Stop Action” to true.
- Changes are not propagated to “WBP_Child”
Instances
- Create user widget “WBP_Parent”
- Create user widget “WBP_Container”
- In “WBP_Container” drag in “WBP_Parent”
- In “WBP_Parent” change any property like “Is Focusable” or “Stop Action” to true.
- Changes are not propagated to instances in “WBP_Container”
Workarounds
Editing the property defaults through the standard Blueprint Graph Editor does propagate properly.
Workarounds - Fixing “Corrupted” Widgets
If you do change a property in the UMG editor (Designer view) then that property essentially becomes “unlinked” from all its instances / children, as only the parent property is changed while the children retain whatever value they had before - making them think they’re overriding the property now.
As a brute force fix, in the parent widget you can see the property to all possible values to “pick up” all child instances and make them think they’re using the parent default value, and then set your target value.
For example a boolean like IsFocusable, set it to True, then False, and then your target value. Same goes for enumeration drop downs. Remember this has to be done in the Graph View.
Obviously this will stomp any overrides that should be there, but at least you have a base line to work off of again.