Tryst::UI::CellPosition
A node's position inside its parent ui.grid, set by WidgetDSL#cell. Its own record rather than a Hash, which a nested structure like this could not be anyway - TclArgValue's union has no room for one, the same reason WidgetType#flow needs FlowConfig.
colspan/rowspan rather than a lone span: - a symmetric, self-documenting pair, where span:/rowspan: reads as though the two were different kinds of thing. The per-cell overrides below are all nilable on purpose: nil means "say nothing", so Realizer#arrange_grid falls back to the grid's own defaults (sticky ew, padx/pady from gap:) exactly as it did before any of them existed.
Constructors
Instance methods
Every cell this widget occupies, which is what overlap detection needs - a spanning widget collides with anything under any part of it, not just at its own top-left corner.