fix(bank_panel): drive new-content baseline re-arm from persist's load signal
The detector re-armed its GuidBaseline on a pointer compare (proj != lastProject), a weaker signal than persist's GUID-primary identity. On a load onto a recycled ReaProject* the baseline never reset, so the just-loaded project's pre-existing tracks diffed against the previous project and were mass-tagged into the active mode — opening a Design-saved project mis-tagged its Arrange tracks. Re-arm now rides persist's authoritative load signal via bankPanelNotifyProjectLoaded().
This commit is contained in:
+9
-1
@@ -216,8 +216,16 @@ static void OnTimer()
|
||||
// project saved in Design mode parks the Arrange tracks automatically, no manual
|
||||
// toggle. Fires exactly once per load (consumeLoadSignal clears it); idle ticks
|
||||
// skip it. proj = nullptr -> REAPER's active project (the one poll just loaded).
|
||||
if (g_session.consumeLoadSignal())
|
||||
//
|
||||
// The SAME signal re-arms the bank panel's new-content detector: a load must
|
||||
// re-baseline the detector against the just-loaded project's content so its
|
||||
// pre-existing tracks are never mis-detected as "new" and mass-tagged into the
|
||||
// active mode (the reload-mis-tag bug). Notify BEFORE the reapply so the detector's
|
||||
// re-arm and the model restore ride the one authoritative load event.
|
||||
if (g_session.consumeLoadSignal()) {
|
||||
reasampler::bankPanelNotifyProjectLoaded();
|
||||
reasampler::applyMode(g_session.view(), g_session.view().activeModeId(), nullptr);
|
||||
}
|
||||
|
||||
// Reflect a live bank change (capture / project load) in the docked grid.
|
||||
// Cheap when the bank is unchanged (a fingerprint compare); repaints only on
|
||||
|
||||
Reference in New Issue
Block a user