Implement static layout

When resizing the widget, it's unlikely that 're-layout' is desired as
well.  This commit separates that functionality through the use of a
`do_layout` flag to `paint` that defaults to `True`.