Summary
The quadraui::MultiSectionView primitive (#293) ships with axis: Axis::Vertical | Horizontal wired through its API + layout math, but only the vertical rasterisers are implemented in v1. Horizontal rasterisers are todo!() until a real use case arrives.
This issue tracks adding the horizontal rasterisers when needed.
Why deferred
Decided during the #293 design pass: wiring the axis field through the API and layout algorithm (main-axis / cross-axis terminology internally) is cheap and avoids a future API break. Painting horizontal in TUI + GTK is real work with zero confirmed consumers today, so it's not worth doing speculatively.
When to pick this up
Any of:
- A consuming app (kubeui, Postman clone, vimcode itself) wants a horizontal multi-section ribbon — e.g. top-of-window Edit / View / Insert ribbon with tool-grid bodies, or a horizontal multi-pane layout where each pane has its own header.
- A new primitive composes
MultiSectionView and needs horizontal layout (rare).
- We want to demonstrate cross-axis parity in a quadraui demo or talk.
What's involved
quadraui::tui::draw_multi_section_view — handle Axis::Horizontal (column-major rather than row-major; section headers become left columns; bodies extend rightward).
quadraui::gtk::draw_multi_section_view — same, in Cairo.
- Divider rendering: vertical
│ glyph in TUI, vertical line in GTK; drag direction swap.
- Hit-test:
MultiSectionViewLayout already uses Rects, so hit-test code should be axis-agnostic — verify.
- Tests: mirror the vertical tests with
axis: Horizontal and content-aware bounds assertions.
Effort estimate: ~4–6 hrs once a real consumer is identified.
References
Summary
The
quadraui::MultiSectionViewprimitive (#293) ships withaxis: Axis::Vertical | Horizontalwired through its API + layout math, but only the vertical rasterisers are implemented in v1. Horizontal rasterisers aretodo!()until a real use case arrives.This issue tracks adding the horizontal rasterisers when needed.
Why deferred
Decided during the #293 design pass: wiring the
axisfield through the API and layout algorithm (main-axis / cross-axis terminology internally) is cheap and avoids a future API break. Painting horizontal in TUI + GTK is real work with zero confirmed consumers today, so it's not worth doing speculatively.When to pick this up
Any of:
MultiSectionViewand needs horizontal layout (rare).What's involved
quadraui::tui::draw_multi_section_view— handleAxis::Horizontal(column-major rather than row-major; section headers become left columns; bodies extend rightward).quadraui::gtk::draw_multi_section_view— same, in Cairo.│glyph in TUI, vertical line in GTK; drag direction swap.MultiSectionViewLayoutalready usesRects, so hit-test code should be axis-agnostic — verify.axis: Horizontaland content-aware bounds assertions.Effort estimate: ~4–6 hrs once a real consumer is identified.
References
MultiSectionViewprimitive (parent)quadraui/docs/DECISIONS.md— captures the "wire axis, ship vertical-only" decision