How to properly move UMG widget element by touch?

My original desire was to have a touch joystick that I could be able to press (just like click event but on touch interface joystick). I decided that it could be done using UMG, so I somehow created in 4.16 some BP schemes, using crutches like binding InputEvent events from PlayerController and using button’s OnPressed events to do stuff only when button touched,

but with finger control, move constraints and some other features (and other crutches).

When I decided to rewrite it on 4.17 to clean up, it didn’t work because button began to block touch input and InputTouch events stopped firing in case when I click the button (I don’t even remember what I did to make it fire events and not consume input)


So, my question is - how to properly do this? As I understand, DragWidget is not quite what I need, because it’s a separate widget, and you need to specify key (if Touch1, then second finger isn’t able to control the second copy of widget).
Or how to make the button not blocking touch? I didn’t change input mode to UI only, and I’ve tried to set IsFocusable property of that button to false.

Sorry for mistakes if any

So, I couldn’t find less crutchy solution (if there is, I would be happy to know, maybe through Slate API, but I’m not so good at UE and c++ yet), so I made this. I wonder if this will help someone.