This layout stuff works by letting widgets calculate their bounding boxes, which will be used to position the rest of the widgets. Currently only used to position labels.