Inside that callback you can retrieve the current position of the cursor (CurrentPoint) and set a flag so your WindowButtonMotionFcn can do interesting things like changing the XData and YData properties of your ball.
When the button is released you can set a flag to make the motion function return immediately after it starts (or wipe the property).
If you want a working example: you might be able to find examples on the File Exchange, but you can also have a look at my WindowLevel function, which also responds on dragging.