Manage preferred size
We compute and store a minimal size based on the view. This minimal size is exposed to containers and the natural size is set as 50% greater. When the minimal size is changed the calendar is queued for resize so the new preferred size is used.
This way the calendar can be put in ScrolledWindow via a Viewport.