Feedback and Bugs UMG past weeks.

are some listed bugs and feedback I have had with UMG over the last couple of weeks.
My last Feedback on UMG was a bit unconstructive so I hope this one is better.

Feedback:

  • Combo Box String: Is missing a get option count node.
  • Uniform Grid Panel: Should have styles added to them for stuff like border, size min and max size.
  • Styles: Its nice that you can now set styles directly in the UMG Editor, but where do I set it using the Slate Style Assets now except in the Graph?
  • Code: Delegates/ Callback Method for when the owning controller and its pawn first becomes valid. (Nice for a safe place to bind delegates in a extended user Widget, m.m.
  • Code: Delegates/ Callback Method for when the owning controller and its pawn become invalid. (e.g: When player is exiting game/ PiE.) Can be used to Remove any bound delegates in a extended User Widget, m.m.
  • BlueprintImplementableEvent executed before the UserWidget is removed from Parent.
    e.g: OnAboutToRemoveFromParent(). Good for cleaning up child widgets before game closes / widget is removed. My experience is that game will crash if this is not done.
  • Work flow and best practice guidelines should be made more clear in the documentation.
    Its my experience that as soon as one widget is refrencing a second one problems are inbound for some resson.

Bug:

  • Combo Box String Widget: If you use the “Clear Options Node” the Editor/ game crashes.
    Workaround: Keep a String Array around with the options and remove them one by one.
  • Removing a widget containing child widgets and not remove child widgets crashes the editor. on exit from PiEhttps://answers.unrealengine.com/questions/146889/clear-children-bp-node-makes-my-editor-cash-on-exi.html
  • Removing all options in a Combo Box (includeing default one, index 0) will crash editor/ game if re opend and sometimes just by clearing it.
  • [UMG] Several Bugs with Combo Box (String) - UI - Epic Developer Community Forums

Thanks for the constructive feedback :slight_smile:

Fixed locally, will checkin on Monday.

Adding styling to it is an unlikely thing to occur, it’s not the design we’re going for with Slate/UMG. Composition is the preferred approach, instead of building the style logic into the panel. There’s no doubt that whatever we choose for the style will not be enough. As for min/max size - what’s the case for them? Is there something you need them for that is impossible to do currently?

Just the graph. May bring it back to the details panel in a future version - if they returned to the details panel it would be all or nothing. Either you could use the style, or not. No local overrides would be possible without a large refactor. The recommend approach is to make reusable widgets, instead of styles. Most of the time to do fancy stuff you’ll need widget access anyway.

Just wait to create your widgets. When it’s valid create the widget, before it’s about to become invalid notify the widgets that need to be destruction work, to do destruction work. Adding those handlers would means potentially tons of widgets doing unnecessary work, when in all likelihood you only need 1-2 widgets to actually need to know about this.

May add in the future something like this, but not as a measure users need to use to prevent crashes. Looked at your bug reports, looks like they’re not reproducing the crashes on ML, so 4.7 final should fix a number of those issues. If not - will look into future reports for 4.8.

The circular reference problem has been reported and workarounds have been given on the forums and answerhub. A lot of users report it as the REINST bug. It’s an issue with the Linker used by the Blueprint Compiler. The BP team is aware of it - and working on fixing it, hopefully it wont be a problem for much longer. The workaround in a nutshell is to do your communication through a single direction. Instead of passing instances to children, use either interfaces, or event dispatchers to bubble messages to parent widgets so that the parents can be notified without explicitly being called upon.

Looked into your repro projects, thanks for providing those. That’s by far the best way to ensure something gets done about the problem. The clear children shouldn’t be an issue in the future. Wasn’t able to get it reproduce on main - so I suspect 4.7 is fine. Looked into the String ComboBox, there were a lot of issues with that control. I’ve got several changes locally I’ll get in on Monday that should fix it. Hopefully not too late to get them into 4.7.

Awsome, thanks for the great reply.
I will just turn my focus onto something else for now, as you guys are on the case. :slight_smile:
Thanks again, and happy new year!

I’m unsure if this has been reported about the combobox string, but I have a function that adds an array of strings into a combobox on creation. It works fine when I switch between the options, unless I leave it onscreen for approximately 1 minute and then try to pick an option. I get a PIE + Editor crash and this error from the log:

[2015.01.06-01.29.13:228][811]LogWindows: === Critical error: ===
Assertion failed: IsValid() [File:F:\Documents\Unreal\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h] [Line: 658]

Not sure if its a combobox or end user error =x.