UI: Better split layout support for checkboxes
Makes the following layout changes possible:
Best test this in the temp-checkbox-layout-tweaks branch which contains
layout tweaks all over to make good use of the changes here. These will be
- Add support for row and column headers (i.e. uiLayout.column(heading="Foo"), uiLayout.row(heading="Bar")). If the first property added to this layout doesn't insert anything into the label split column, the heading is inserted there. Otherwise, it's inserted as own item.
- Add support for manually inserting decorators for an existing item (uiLayout.prop_decorator()). That way layout creators can manually insert this, which was the only way I saw to support these layouts:
- Autogenerated layouts for operator properties look bad if there are only checkboxes (which only use half the region width). So before creating the layout, we iterate over visible properties and disable split layout if all are booleans. I think this is fine, if needed we could also add layout hints to operators.
- uiTemplateOperatorPropertyButs() now handles macros itself, the caller used to be responsible for this. Code that didn't handle these so far never used macros I think, so this change should be visible.
- Remove manual property split layout from autogenerated operator properties layout.
- Padding of checkboxes is tweaked to make their label visually more connected to the checkboxes.
- Support split layout for menus (should work for uiLayout.menu(), .operator_menu_enum(), .prop_menu_enum(), maybe more)