fix: single-track active mode — only one button red at a time
activePlayTrackIds changed from Set to single trackId string. All buttons default gray. Click toggles red on one track only.
This commit is contained in:
@@ -5064,7 +5064,7 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, activeTracks, onClos
|
||||
}
|
||||
var layers = [];
|
||||
ghostLayers.forEach(function(layer) {
|
||||
if (activePlayTrackIds !== null && !activePlayTrackIds.has(layer.track_id)) return;
|
||||
if (activePlayTrackIds !== null && activePlayTrackIds !== layer.track_id) return;
|
||||
var trk = (activeTracks || []).find(function(t) { return t.id === layer.track_id; });
|
||||
layers.push({
|
||||
trackId: layer.track_id,
|
||||
@@ -6142,17 +6142,13 @@ const beatSec = 60.0 / (parseInt(bpm) || 120);
|
||||
seenTracks[m._trackId] = true;
|
||||
var track = (activeTracks || []).find(function(t) { return t.id === m._trackId; });
|
||||
var isActive = m._trackId === st.trackId && m.id === st.target_id;
|
||||
var isPlayOn = activePlayTrackIds === null || activePlayTrackIds.has(m._trackId);
|
||||
var isPlayOn = activePlayTrackIds === m._trackId;
|
||||
els.push(React.createElement("button", {
|
||||
key: m._trackId,
|
||||
onClick: function() {
|
||||
if (isActive) return;
|
||||
setActivePlayTrackIds(function(prev) {
|
||||
var allIds = allMidiItems.map(function(x) { return x._trackId; });
|
||||
var s = prev === null ? new Set(allIds) : new Set(prev);
|
||||
if (s.has(m._trackId)) s.delete(m._trackId);
|
||||
else s.add(m._trackId);
|
||||
return s.size === allIds.length ? null : s;
|
||||
return prev === m._trackId ? null : m._trackId;
|
||||
});
|
||||
},
|
||||
className: "flex items-center justify-center h-[20px] border border-zinc-600 rounded-md cursor-pointer outline-none mx-1 my-[2px] " + (isActive ? 'bg-yellow-600 text-black font-bold' : (isPlayOn ? 'bg-red-700 text-white font-semibold' : 'bg-zinc-700 text-zinc-300 hover:bg-zinc-600'))
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user