fix: instrument load from PIANO_ROLL in SECTION-TAB writes to main
updateActiveTracksRef checks sessionTabs by currentActiveTab. When activeTab is a PIANO_ROLL sub-tab (midi_xxx), none matches -> falls to setTracks (main). Instrument changes are lost. Fix: also check subTabs for PIANO_ROLL type, resolve parent session tab via parent_tab_id, route to setSessionTabs.
This commit is contained in:
+11
-3
@@ -12380,12 +12380,20 @@ const App = () => {
|
||||
const updateActiveTracksRef = useCallback(updater => {
|
||||
const currentSessionTabs = sessionTabsRef.current;
|
||||
const currentActiveTab = activeTabRef.current;
|
||||
const st = currentSessionTabs.find(s => s.id === currentActiveTab);
|
||||
var st = currentSessionTabs.find(s => s.id === currentActiveTab);
|
||||
if (st) {
|
||||
setSessionTabs(prev => prev.map(s => s.id === currentActiveTab ? { ...s, tracks: updater(s.tracks), isDirty: true } : s));
|
||||
} else {
|
||||
setTracks(updater);
|
||||
return;
|
||||
}
|
||||
var pr = subTabsRef.current ? subTabsRef.current.find(s => s.id === currentActiveTab && s.type === 'PIANO_ROLL') : null;
|
||||
if (pr && pr.parent_tab_id && pr.parent_tab_id.startsWith('session_')) {
|
||||
var parentSt = currentSessionTabs.find(s => s.id === pr.parent_tab_id);
|
||||
if (parentSt) {
|
||||
setSessionTabs(prev => prev.map(s => s.id === pr.parent_tab_id ? { ...s, tracks: updater(s.tracks), isDirty: true } : s));
|
||||
return;
|
||||
}
|
||||
}
|
||||
setTracks(updater);
|
||||
}, []);
|
||||
const updateActiveTracks = updateActiveTracksRef;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user