Skip to content

quadraui MultiSectionView: ship horizontal axis rasterisers #294

Description

@JDonaghy

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestinfrastructureBuild, CI, distributionuiUI/rendering

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions