figure: shared-y rows draw one y axis, on the first cell

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino FerrariandClaude Opus 4.6 committed 2026-11-04 00:43:41 +01:00
1 parent 25c3381551
commit 2b4b316ad8
6 files changed
+172 -5

No files matched your search

+6 -1
View File
@@ -902,9 +902,14 @@ void Renderer::draw_tick_labels(const Plot& plot, const PlotLayout& layout) {
// Y labels: right-aligned in their strip, centred on the tick and pulled back
// inside the strip at the two extremes (a label centred on the top tick would
// otherwise hang above the plot area).
//
// Unless the plot gave its y strip away (`YStrip::None`, a later cell of a split row that
// shares one y axis): its label area is then zero wide, and labels right-aligned against it
// would be drawn in the neighbouring cell. Keyed on the area rather than the mode so a strip
// the layout clamped to nothing stages nothing either.
const f32 top_limit =
std::max(layout.y_label_area.y, layout.y_label_area.bottom() - line_h);
for (u32 i = 0; i < plot.y_axis_count(); ++i) {
for (u32 i = 0; layout.y_label_area.w > 0.0f && i < plot.y_axis_count(); ++i) {
const Transform transform = plot.y_transform(i);
for (const Tick& tick : plot.y_axis(i).ticks) {
if (!tick.major || tick.label.empty()) continue;