I noticed, that trying to the the ItemData of a row, that does not exist (e.g. -1) the game will crash without any error.
I would suggest giving back NULL or even better returning a boolean whether the Method found an entry or not. I don't know if it's the case with GetItemText. This is giving back a boolean.
class TextListboxWidget extends SimpleListboxWidget { ... proto bool GetItemText(int row, int column, out string text); proto void GetItemData(int row, int column, out Class data); ... }
to
class TextListboxWidget extends SimpleListboxWidget { ... proto bool GetItemText(int row, int column, out string text); proto bool GetItemData(int row, int column, out Class data); ... }