UMG is really coming along nicely, but it makes handling input an absolute nightmare. Splitting it up so certain input events can only be handled in UMG and certain input events can only be handled by actors in game mode (e.g. your player controller) is really frustrating. For example, doing something to a widget when you shift click it shouldn’t be hard, but it is. I have to create a Click handler on my UMG widget, then in my player controller I need a boolean to indicate if the shift key is pressed down, then in my UMG widget I need to check that boolean. It’s made worse by UMG focus events interrupting key pressed so if my widget didn’t have focus when I pressed shift, it won’t register!
Another example is if I want one of my widgets to listen to an arbitrary key press, it has to be done in a game mode object like my player controller and I have to have an event dispatcher with my widget binding to that. It’s a mess.