layout editor: horizontal-resize icon, divider drag follows the pointer; x caption on every labelled plot; probes and docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
0c228c4822
commit
7972646dd2
14 files changed
+312
-65
No files matched your search
@@ -157,13 +157,13 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
|
||||
(`kColGap`, 6 px); the editor's drag is stricter (below). The floors and the weights act on **plot widths**: the row's y gutter (carried by the first
|
||||
cell) is taken off the row width first, then the cells share the rest, so equal weights give equal plot
|
||||
areas and the first cell's rect is its gutter plus its plot width. A weight is a share of what is
|
||||
left *after* the gutter and the floors, so cells of `{3, 1}` read 546:207 (rects) in a 756 px
|
||||
left *after* the gutter and the floors, so cells of `{3, 1}` read 524:229 (rects) in a 756 px
|
||||
figure, not 3:1, and the editor's 96 px drag floor is a floor on the plot *width*, not on the share. Because a cell's width is
|
||||
`64 + extra * weight / total` and not proportional to its weight, `layout_col_apply()` does not scale
|
||||
the pair's weights by the width ratio: it keeps the pair's weight sum `S` from the drag's *start*
|
||||
(`layout_col_drag_start`) and gives the left cell `S * (want_left - 64) / (pair - 128)`, clamped to
|
||||
`[0.001, 0.999]` (the plotter refuses non-positive weights; `0.5` if the pair is not wider than 128).
|
||||
`want_left` and the pair are plot widths (`layout_col_drag_begin` subtracts the first cell's `y_axis_width + y_title_width` from its rect); `want_left` is the pointer's width clamped to `[96, pair - 96]` logical px. The divider therefore
|
||||
`want_left` and the pair are plot widths (`layout_col_drag_begin` reads each plot's `layout().axes.w`, after a `layout()` on the current figure, so the gutter and the inter-axes gap are never counted as weight); `want_left` is the pointer's width clamped to `[96, pair - 96]` logical px. The divider therefore
|
||||
follows the pointer, the shrinking cell reads 96 px at the extreme and the pair keeps its total width
|
||||
(the split probe's `col-drag` line asserts all three). `kPlotterMinCellPx` (64) mirrors the plotter's
|
||||
`kMinCellWidthLogical`; both are logical px (the plotter scales it by `ui_scale`, which is
|
||||
@@ -176,9 +176,12 @@ Part of [CLAUDE.md](../../CLAUDE.md). These are rules that cost a defect to lear
|
||||
**The editor's controls** (`rebuild_layout_editor()`): a cell `+` (`kLayoutCellKey`, tooltip "split
|
||||
here") at a row's left edge, at its right edge and at every internal boundary -- `n + 1` of them for a
|
||||
row of `n` cells, so a one-cell row can be split from either side -- inserting at that position; a drag
|
||||
arrow (`kLayoutColKey`, `go-next-symbolic`) at each internal boundary that moves the boundary between
|
||||
double-headed arrow (`kLayoutColKey`, `udpscope-resize-cols-symbolic`) at each internal boundary that moves the boundary between
|
||||
its two neighbours, **each floored at `kMinCellPx` = 96 px logical** (or half the pair when the pair is
|
||||
narrower) and measured from the two widths at drag start, so the drag does not compound; and the per-plot
|
||||
narrower) and measured from the two widths at drag start, so the drag does not compound. **The handle follows the divider it
|
||||
drags, so the gesture's offset shrinks by the handle's own displacement**: `on_layout_col_update` adds it back
|
||||
(`layout_col_total_offset(offset, handle_x_now, handle_x_at_begin)`, the handle's x in overlay coordinates, stored by
|
||||
`on_layout_col_begin` in `layout_col_drag_handle_x0`) before multiplying by the scale; without it the divider settles at half the pointer's travel. The per-plot
|
||||
`×`, which removes the cell in a split row ("remove this plot") and the row in a one-cell row ("remove
|
||||
this row"), insensitive when it would leave no plot. Cell `+` is insensitive at 4 cells in its row or 8
|
||||
plots in all; the row `+` is insensitive at 8 plots. **The cell `+` is keyed by `kLayoutCellKey` (figure row * 8 + position + 1) and
|
||||
|
||||
Reference in new issue
Block a user