Reuse the Tool mousedrag handlign logic for mousemove

I'm not sure how I personally feel about my own refactor lol, so close if its not clear. Reuses a lot of the logic that is shared between the event handling for `mousemove` and `mousedrag`. Comments should be updated, didn't get around to it yet