Dynamically added child widget won't display

I want to preface this question with the statement that this was working in 4.6, i updated to 4.7 the other day and now it just will not work, i can’t find anything in the 4.7 release notes that would indicate this and i have exhausted my crocodile brain concerning it.

here’s the deal:

i have an InGameMenuWidget that has a ChatWidget(which works fine) and a ScoreboardWidget.

the ScoreboardWidget has a Border (background image) a title bar and a vertical box to hold ScoreRow widgets.

the ScoreRow widgets are just a horizontal box with three text blocks and set text functions for each block.

Now to update this ScoreboardWidget i have tried a number of approaches, the first (and potentially most ignorant) was to check if the parent was visible in the Tick event of the ScoreboardWidget, then get the information from the GameState PlayerArray and create the ScoreRow widget intrinsically and add it to the ScoreBoardWidget’s PlayerList vertical box.


This is the version that worked before i updated to 4.7. I tried adding an array of structs to keep track of the information that is in each ScoreRow object, as well as an array of ScoreRow objects to keep track of the object references. Since this stopped working and I’ve been moving toward having my widgets do nothing but act as interfaces, I created an event dispatcher that asked my HUD to create the widgets and add them to the board. I have also done this in the player controller and tried every combination of moving the arrays around as well. the outcome is identical every time: nothin’. the part that bothers me most is that I can get a PrintString display of the information that should be showing up on the scoreboard on completion of the NonOrderedUpdate, as well as confirmation that the PlayerListBox does indeed have the correct number of widget children.

any ideas or information would be appreciated with the utmost gravity.


I have found that this actually works if its called from a timer (and at a slower interval) rather than in the tick function. No idea why this is the case. I’d say it might be of interest in terms of bugs, but really, updating it every tick like that was such poor practice that i won’t presume to say so.


How should i structure my approach in doing this such that i am meeting or exceeding good programming practices?