Design View: expose a park-shaped no-record track visible instead of adopting or refusing it
Adopting silently wipes hand repairs or hides untouched tracks forever; refusing was rejected too. EXPOSE hands the track back and self-heals on the next apply.
This commit is contained in:
+10
-1
@@ -114,6 +114,7 @@ bool applyMode(ViewModeModel& model, const std::string& targetModeId, ReaProject
|
||||
|
||||
bool laneModeChanged = false;
|
||||
bool wrote = false; // anything at all this apply changed — see applyMintsUndoPoint
|
||||
std::vector<std::string> exposedNames; // named while handles are fresh, reported after the block
|
||||
|
||||
Undo_BeginBlock2(project);
|
||||
{
|
||||
@@ -133,7 +134,11 @@ bool applyMode(ViewModeModel& model, const std::string& targetModeId, ReaProject
|
||||
const std::string& guid = tp.flags.front().guid;
|
||||
MediaTrack* tr = resolve(trackByGuid, guid);
|
||||
if (!tr) continue; // stale/deleted GUID — prune
|
||||
if (parkTrack(model, guid, tr, tp.flags)) wrote = true;
|
||||
const TrackParkResult r = parkTrack(model, guid, tr, tp.flags);
|
||||
if (r.wrote) wrote = true;
|
||||
// Named here, not after the block: TrackList_AdjustWindows below can
|
||||
// invalidate the handle.
|
||||
if (r.exposed) exposedNames.push_back(trackDisplayName(tr));
|
||||
}
|
||||
|
||||
for (const TrackPlan& tp : plan.restore) {
|
||||
@@ -189,6 +194,10 @@ bool applyMode(ViewModeModel& model, const std::string& targetModeId, ReaProject
|
||||
const bool mint = applyMintsUndoPoint(realSwitch, wrote);
|
||||
Undo_EndBlock2(project, mint ? undoLabel.c_str() : "", mint ? kViewUndoMask : 0);
|
||||
|
||||
// After the undo block: an EXPOSE report is a console message, not a project
|
||||
// write, and must not join what a Ctrl-Z rolls back.
|
||||
reportExposedTracks(project, exposedNames);
|
||||
|
||||
// The tool's own account of what it just left driven — the only one that survives
|
||||
// an undo rolling the model back underneath it.
|
||||
noteAppliedState(project, model);
|
||||
|
||||
Reference in New Issue
Block a user