The minigui layout model is based on the web's CSS box model. The layout engine* arranges widgets based on their margin for separation and assigns them a size based on thier preferences (e.g. Widget.minHeight) and the available space. Widgets are assigned a size by the layout engine. Inside this size, they have a border (see Widget.Style.borderWidth), then padding space, and then their content. Their content box may also have an outline drawn on top of it (see Widget.Style.outlineStyle).
Padding is the area inside a widget where its background is drawn, but the content avoids.
Margin is the area between widgets. The algorithm is the spacing between any two widgets is the max of their adjacent margins (not the sum!).
* Some widgets do not participate in placement, e.g. StaticPosition, and some layout systems do their own separate thing too; ultimately, these properties are just hints to the layout function and you can always implement your own to do whatever you want. But this statement is still mostly true.
Convenience mixin for overriding all four sides of margin or padding in a Widget with the same code. It mixes in the given string as the return value of the four overridden methods.