Refactor canvas events

Refactor canvas events so that events are always on and logic to handle
actions are within the event handlers