Could you not just assume the mouse is still down unless you hear otherwise (via a mouse up event or the mouse coords move outside the confines of the canvas) ?
So, on mouse down event you set
self.dragging = True
self.element_im_moving = <whatever>
Then on the mouse move events you do
if self.dragging:
# we are dragging - move self.element_im_dragging x/y accordingly
Then in mouse up event
if self.dragging:
self.dragging = False
# handle dropping