This is good enough for now, I'm opening separate tickets for the other issues
It still fits the CanvasData, because it is a piece of data associated to the Canvas (indeed, the currently drawn item). When there is no currently drawn item, is set to None; for the time being, current_element != None is the result of is_drawing()
I'm not sure about this code: if a line intersects a Rect, but the line start and end are outside of the rect, will this return true?
I think we should split the various parts in more Canvas::Freehand parts. This way, when we implement selection etc, we can identify paths with a single connected stroke
I'm not sure that current_element should be associated with the Pen; a Pen should have thickness and color informations only
I feel like we should use a state machine to identify the state the app or the canvas is in; maybe this would simplify this logic, or at least make it more explicit
This is clearly an important architectural piece, some work is needed, but we're heading in the right direction