@@ -28,6 +28,7 @@ import { InstrumentRecord } from "models/instrument-record";
2828import { TrackSectionStepGrid } from "components/tracks/track-section-card/track-section-step-grid" ;
2929import { TrackSectionStepColumnWidth } from "components/tracks/track-section-card/track-section-step-column" ;
3030import { useWorkstationState } from "utils/hooks/use-workstation-state" ;
31+ import { unsoloAll } from "utils/track-utils" ;
3132
3233interface TrackSectionCardProps {
3334 file ?: FileRecord ;
@@ -45,13 +46,13 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
4546) => {
4647 const [
4748 sequencerDialogOpen ,
48- handleOpenSequencerDialog ,
49+ openSequencerDialog ,
4950 handleCloseSequencerDialog ,
5051 ] = useDialog ( ) ;
5152
5253 const [
5354 pianoRollDialogOpen ,
54- handleOpenPianoRollDialog ,
55+ openPianoRollDialog ,
5556 handleClosePianoRollDialog ,
5657 ] = useDialog ( ) ;
5758
@@ -75,7 +76,8 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
7576 trackId : trackSection . track_id ,
7677 } ) ;
7778
78- const { state : workstationState } = useWorkstationState ( ) ;
79+ const { state : workstationState , setCurrentState : setWorkstationState } =
80+ useWorkstationState ( ) ;
7981 const stepCount = workstationState . getStepCount ( ) ;
8082 const { isSelected, onSelect } = useClipboardState ( ) ;
8183
@@ -86,6 +88,23 @@ const TrackSectionCard: React.FC<TrackSectionCardProps> = (
8688 const { resultObject : files } = useListFiles ( ) ;
8789 const theme = useTheme ( ) ;
8890
91+ const unsoloTracks = useCallback ( ( ) => {
92+ setWorkstationState ( ( prev ) => {
93+ const { tracks } = prev ;
94+ return prev . merge ( { tracks : unsoloAll ( tracks ) } ) ;
95+ } ) ;
96+ } , [ setWorkstationState ] ) ;
97+
98+ const handleOpenSequencerDialog = useCallback ( ( ) => {
99+ unsoloTracks ( ) ;
100+ openSequencerDialog ( ) ;
101+ } , [ openSequencerDialog , unsoloTracks ] ) ;
102+
103+ const handleOpenPianoRollDialog = useCallback ( ( ) => {
104+ unsoloTracks ( ) ;
105+ openPianoRollDialog ( ) ;
106+ } , [ openPianoRollDialog , unsoloTracks ] ) ;
107+
89108 const handleRemove = useCallback (
90109 ( ) => remove ( trackSection ) ,
91110 [ remove , trackSection ]
0 commit comments