Loop-crossfade-ux review fixes: parked-drag no longer fakes LOOP OFF, waveform label contrast fixed, hover memoizes its bank read

Also corrects the cap-area, em-dash, glyph-overhang and heuristic-comment findings noted in review.
This commit is contained in:
2026-08-02 05:50:38 -04:00
parent a7c3c7a828
commit 1b4d0e67b7
10 changed files with 125 additions and 27 deletions
@@ -64,11 +64,12 @@ bool ReaSamplerEditor::mouseDownWaveform(const FaceLayout& fl, int x, int y) {
// keeps a cap apart from ITS OWN column; this is the cross-affordance case on top of that).
// resolveWaveformClaim (spline_edit.h) is the ONE arbitration: it measures each claimant's
// own NOMINAL target area and lets the smallest hit win, since a fixed check order shadows
// whichever one loses the tie — this seam regressed twice from exactly that fix. Giving
// every mark a cap changed WHICH mark the cap slot resolves to, not the slot's nominal area
// (every cap is one markerHandleRect) and not the ordering cap < node < column, so the
// arbitration itself is unchanged. Never add here (kAdd is only tried once nothing else has
// claimed the click, below).
// whichever one loses the tie — this seam regressed twice from exactly that fix. Giving every
// mark a cap changed WHICH mark the cap slot resolves to AND the slot's own nominal area
// (every cap is one markerHandleRect, so it moved from the old clipped-actual measure — 60 at
// frame 0 — to the nominal 110); the `cap < node < column` ordering held anyway, because 110
// is still under the node's fixed pick-box area. Never add here (kAdd is only tried once
// nothing else has claimed the click, below).
WaveformClaim node;
if (envNodeHit.hit) {
constexpr std::int64_t side = 2 * kNodeGrabRadius + 1;