Hi Stef,
Currently there was a distinction between Shape and Path which turn out to be confusing. So Shape will go away and there will be just a Path (line, circle, rectangle, etc).�� We started to refactor this during the PharoDays. And yes, Rectangle will be polymorphic with Path.
BlElement does support clipping and click detection by paths but right now they were implicit and you needed to subclass BlElement to override them independently. We'll change this so one can set them independently in BlElement.
Yes, BlElement had a default path for drawing but that will go away. By default BlElement will have an empty drawOn... method. So to create a custom widget you can subclass BlElement, override drawOn... and use the canvas to draw anything you wish.
There will be a subclass of BlElement that will add more drawing oriented logic but BlElement will be independent of that.
Yes, the API of the canvas is not perfect but we're improving.��
Cheers,
Andrei