Enumerations
Every finite value set in ManyUI is a module-scoped enum: a module holding an @enum T with SCREAMING_SNAKE_CASE values. They tab-complete (ColorDepth.<TAB>), discriminate by type (d isa ColorDepth.T), and keep their value names out of the package namespace.
ManyUI.Align — Module
Cross-axis alignment.
ManyUI.Attr — Module
Text rendition attributes. Values are powers of two: they are used as bit positions in an AttrMask.
ManyUI.BorderKind — Module
Border line styles. BLANK still occupies its cells.
ManyUI.CheckState — Module
A Checkbox's state.
AN ENUM AND NOT A Bool BECAUSE OF MIXED, and that value is not decoration: it is the "select all" box over a partially-selected set, which is exactly what a TreeView with checkable nodes needs. Two values would be a Bool and this module would be a lie.
NORMATIVE: toggle! NEVER PRODUCES MIXED. The user has two reachable states; the third is set BY CODE, from a fact the user cannot express with one keystroke. MIXED toggles to CHECKED, because "some are on" answered by a human means "now all of them". A box a PROGRAM set to MIXED must be clickable OUT of it, or "select all" over a partial selection is a dead control.
ManyUI.ColorDepth — Module
What a target can display. ORDERED, so depth < ColorDepth.TRUECOLOR is a legal capability test.
ManyUI.ColorKind — Module
How a Color's bytes are to be read.
ManyUI.Combinator — Module
How two compounds relate.
ManyUI.Dimension — Module
How a Length value is to be resolved.
ManyUI.Direction — Module
Main-axis direction of a flex container.
ManyUI.Dirty — Module
What is stale about a node. Values are powers of two: they are combined in a DirtyMask.
SUBTREE is a BREADCRUMB, not dirt: it means "a descendant is dirty", and it is what lets a frame pass skip clean subtrees in O(depth) instead of O(n).
ManyUI.Display — Module
Whether and how a box participates in layout.
ManyUI.Justify — Module
Main-axis distribution. Split from Align so that align: space-between is unrepresentable.
ManyUI.Key — Module
Logical key identity. CHAR means "see KeyEvent.char".
ManyUI.Modifier — Module
Keyboard modifier bits. Powers of two: used as a bitset in Modifiers.
ManyUI.MouseAction — Module
What the mouse did.
ManyUI.MouseButton — Module
Mouse buttons, including the four wheel pseudo-buttons.
ManyUI.Overflow — Module
What happens to content that exceeds its box.
ManyUI.Phase — Module
Where an event is in its propagation. AT_TARGET exists because capture + bubble alone visit the target twice with no way for a handler to tell the two visits apart.
ManyUI.PopupPlacement — Module
Where a popup sits relative to the widget that opened it.
BELOW and ABOVE are fixed; AUTO prefers BELOW and flips to ABOVE only when the popup would fall off the bottom. CENTER ignores the owner and centres the popup in the viewport, for modal dialogs.
ManyUI.ScrollAxis — Module
Which axis a Scrollbar reports on.
ManyUI.ScrollMode — Module
When a Scrollbar's track and thumb are drawn.
NOT the same axis of choice as Overflow: Overflow is a CLIPPING policy owned by the box model; this is a scrollbar VISIBILITY policy owned by the widget. Neither implies the other – NEVER still scrolls.
ManyUI.SelectorKind — Module
The four simple selector kinds.