file manager
git clone https://git.lucas.co/cce-files.git
fix: round the Space map well to match the list across the split
Fifth pass of the relief audit (751d183, ea9b8a7, 326b03c, d436480). The
mechanical checks are clean again — the rect is a local built two lines up,
and `relief_recessed` gets it unexpanded — but the fill/well pairing was
wrong in a way the preview pane's was not.
The map filled square (`pc.rect`) under a well carved at
`plate_corner_radius` (12.0), so the corners disagreed twice: with their own
fill, and with `RowList`, which pairs fill radius to well radius at
`list_corner_radius` (4.0) and is this pane's opposite number across the same
split. Both now use list_corner_radius, which is RowList's pairing verbatim.
What stopped this being a copy of 326b03c: the fill is not what you see. The
root directory tile paints a full square rect over the whole map (dirs paint
a frame and let children cover the inside), so the near-black square corner
is the TILE, measured at rgb(31,35,42) against #20242b, not the fill's
list_bg. Rounding the fill alone — the literal preview-pane fix — would have
been visually inert. The tiles stay square and unclipped because a treemap
cannot follow a curve; dropping the radius 12 -> 4 shrinks the corner they
contradict to the residual RowList already lives with for its square row
overlays.
Pixel-diffed against the installed binary on a synthetic tree of zero-filled
files (25 files, 12 dirs, 2.0M) rather than a real directory. Baseline
captured twice and byte-identical first, which matters more here than in the
earlier passes because reaching the Space page needs a scripted click
sequence. The diff is 112 px inside a bbox spanning the map pane — the four
corners and nothing else, no tile or text moved.
src/pages/space.rs | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/pages/space.rs b/src/pages/space.rs
index e55a690..67efad7 100644
--- a/src/pages/space.rs
+++ b/src/pages/space.rs
@@ -487,9 +487,25 @@ pub fn view(
// The map occupies everything below the header, less the footer readout.
let map = (cx, cy + 34.0, cw, (ch - 34.0 - FOOTER_H).max(0.0));
state.map_rect = map;
+ // Fill and well share one rect AND one radius — `RowList::push_prims`'s
+ // pairing, since this pane is the Browse list's opposite number across the
+ // same split. It used to fill square (`pc.rect`) under a well carved at
+ // `plate_corner_radius` (12.0), so the corners disagreed twice over: with
+ // their own fill, and with the r=4 list the pane sits beside.
+ //
+ // The tiles stay square and unclipped — a treemap cannot follow a curve —
+ // so a corner still contradicts the rim. Dropping 12.0 to 4.0 shrinks that
+ // residual to what RowList already lives with for its square row overlays.
+ // Rounding the fill alone would have been inert: the root directory tile
+ // paints a full square rect over the whole map, so the fill is not visible
+ // except in the 1px inset.
let bg = cce_ui::color::list_bg_color();
- pc.rect(bg, map.0, map.1, map.2, map.3);
- pc.relief_recessed(map.0, map.1, map.2, map.3, cce_ui::layout::plate_corner_radius());
+ let radius = cce_ui::layout::list_corner_radius();
+ {
+ use cce_ui::layout::RenderTarget;
+ pc.rect_with_radius_corners(bg, map.0, map.1, map.2, map.3, radius, (true, true, true, true));
+ }
+ pc.relief_recessed(map.0, map.1, map.2, map.3, radius);
let text_dim = cce_ui::color::TEXT_DIM;
let text_fg = cce_ui::color::TEXT_FG;