The queued resize will only happen trigger a size-request when the widget is realized, and on_size_request() calls ensure_layout(). Moreover, this over protection meant that sometimes a resize wasn't noticed by the button containers.
make libwidget independent of libcanvas. Confine basics to pbd and gtkmm2ext.