Drag&Drop: How to keep the Drag&DropOperation if OnDrop failed / workflow advise

Im a beginner when it comes to Widgets and Drag&Drop, so maybe Im approaching it wrong. Please advise me with a workflow logic.

Example:
DropTo are color sockets: Red, blue and green. Defined by variables, not by different widgets.
DragFrom are color stones, supposed to be only droppable on the same color socket.

Right now I do my variables check OnDrop, and if it turns out the be an invalid socket I return false, and OnDragCancelled I return my stone to the inventory.
Rather than that I would like to keep the operation, or create a new one on the same spot.

bump since I still have no idea how I could manage that with the available functions

I hope I can able to explain you the flow.
When you start to drag object, you will trigger OnDragEvent or something, I dont remember full name of it.
The data you need to move is called “Payload” and you can customize it however you want.
Then the object or widget that you are dropping on should have OnDrop event. Then you can break your payload and do whatever you want with it.

thanks for your reply. I think you are just describing the normal drag and drop worklow.

Maybe Drag&Drop is just not what Im looking for in this scenario.
Because I want to keep the dragged widget when the drop failed. But this doesnt really make sense because the player can not drop anymore since he already left mouse button.

Instead of DragAndDrop I will try something else like “on click move the widget”