Don't redundantly recalculate x_size
Scroll parameters should be specified in view coordinates.
Add a get_maximum_size call (and also better document some other APIs too)
Place the CanvasWidget inside a Scrolled Window (and implement Scrollable)