fix: close review findings on spline EGs — engine, codec, and popup/overlay UI grammar

Live pitch depth, Gate/Spline enable-rule agreement, inert kTrigLength, NaN wire guards, hard-flag-tail corruption no longer wipes the record, RT/cold spline tie-break, retired alt-click, marker-shadow fix, plus new test coverage.
This commit is contained in:
2026-07-31 22:27:41 -04:00
parent e44bd42dd9
commit 1c774226d3
22 changed files with 414 additions and 88 deletions
+3 -4
View File
@@ -216,8 +216,7 @@ private:
// Mouse-down inside curve-editor box `r`, resolved through the shared point-editing
// grammar (spline_edit): a node grab starts a kCurveNode drag, an empty-space click adds a
// point and grabs it, control-click toggles a node hard/smooth. Alt-click delete predates
// that grammar and is kept as a landed alternate.
// point and grabs it, control-click toggles a node hard/smooth.
void handleCurveMouseDown(const Rect& r, int x, int y);
// Left-click while the curve popup is open (modal over the Sample face): Close /
@@ -270,8 +269,8 @@ private:
void commitLive();
// Whether an in-flight drag commits live rather than through a reload. A deck knob is
// live per isLiveDeckParam; an envelope-node drag is live only in Gate, where it edits the
// AHDSR — in Trigger the same drag rewrites the play span, which is not a live control.
// live per isLiveDeckParam; an envelope-node drag is live in EITHER mode — see
// liveCommitFor (deck_groups.h) for why.
bool dragCommitsLive(DragKind kind, int paramId = -1) const;
// Commits `id` as the loaded capture. The one parameter set carries over — it governs