Ω-W1-T5 review fixes: unify the drag frame resolve onto frameToX/xToFrame; honest comments on grabbableMarks and the grey-loop-mark contrast trade
This commit is contained in:
@@ -164,9 +164,11 @@ instrument::ui::WaveMarks ReaSamplerEditor::waveMarksFor(const SetupMarkers& m)
|
||||
}
|
||||
|
||||
instrument::ui::WaveMarks ReaSamplerEditor::grabbableMarks(const SetupMarkers& m) const {
|
||||
// Drawn IFF grabbable. Kept as its own fold because paint and hit-test stay separate
|
||||
// questions, but do NOT re-add a suppression here: the Gate-with-loop-off marks are drawn
|
||||
// grey precisely so they can still be dragged, and dragging one is what turns the enable on.
|
||||
// Drawn IFF grabbable is the product rule, so this is an exact alias of waveMarksFor and
|
||||
// cannot currently diverge from it. Kept as its own seam anyway because paint and hit-test
|
||||
// are separate questions in principle — but do NOT re-add a suppression here: the
|
||||
// Gate-with-loop-off marks are drawn grey precisely so they can still be dragged, and
|
||||
// dragging one is what turns the enable on.
|
||||
return waveMarksFor(m);
|
||||
}
|
||||
|
||||
|
||||
@@ -46,9 +46,11 @@ constexpr Role kRoleStartMarker = Role::OverlayTrace;
|
||||
constexpr Role kRoleLoopMarker = Role::AccentSecondary;
|
||||
// A loop mark whose enable is off keeps its position and its cap — and its full weight, since
|
||||
// it is still draggable. It changes HUE, not opacity: the dim teal it replaces read as broken
|
||||
// rather than as off. Grey against the lime is deliberately under the 3:1 state-indicator floor
|
||||
// the two-neighbour rule (core/ui/CLAUDE.md) sets for a LIVE mark — an inactive control is
|
||||
// exempt, and that lower contrast is the off cue.
|
||||
// rather than as off. Grey against the lime deliberately sits under the 3:1 state-indicator
|
||||
// floor the two-neighbour rule (core/ui/CLAUDE.md) sets — on a mark that stays LIVE and still
|
||||
// drives the loop enable, so this is NOT the WCAG 1.4.11 inactive-component carve-out. It is a
|
||||
// deliberate trade (the off cue reads as lower contrast on a control that can still be
|
||||
// grabbed), pending Daniel's eye in the DAW. Do not change the colour to chase it.
|
||||
constexpr Role kRoleLoopMarkerOff = Role::TextDim;
|
||||
|
||||
// Mark weights. The crossfade is a SOFT boundary and rides below the loop pair's weight at rest.
|
||||
|
||||
Reference in New Issue
Block a user