For some reason adding that second part in the else condition causes me to not be able to drag the circles (Reason which is unknown to me
)
I can click on a part of the circle and it moves slightly, but no dragging.
Just look through the logic step by step. The reason it disabled dragging was because it no longer updates the movement until you release the mouse key. All you need to do is make it so it remembers which shape you're dragging (with a pointer, or integer indexing, or something) and just update the position every frame.
If I was to do it, I would just have a pointer pointing to the object. When you have the mouse down, if the pointer is NULL, set it to the objects address. Every frame, if the mouse is still down and the pointer is not NULL, update that objects position. When the mouse is release, if the pointer has an address assigned to it, set it to NULL.