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:
@@ -50,6 +50,17 @@ std::vector<std::string> bankPanelSelectedSampleIds();
|
||||
// reflected without the panel diffing the bank itself.
|
||||
void bankPanelRefresh();
|
||||
|
||||
// Notifies the panel that persist just (re)loaded a project's view model (membership +
|
||||
// active mode). main.cpp calls this on the exact tick it drains persist's load signal
|
||||
// and reapplies the active mode. It re-arms the new-content detector so the just-loaded
|
||||
// project's PRE-EXISTING content is taken as the baseline (reported as nothing new),
|
||||
// never diffed against the previously-open project and mass-tagged into the active mode.
|
||||
// This coordinates the detector's project-identity signal with persist's authoritative
|
||||
// (GUID-primary) one — the two can no longer diverge on a recycled ReaProject* address,
|
||||
// which is what caused a project opened in Design to mis-tag its Arrange tracks. READ/
|
||||
// arm of panel state only; no project or bank mutation.
|
||||
void bankPanelNotifyProjectLoaded();
|
||||
|
||||
// The panel's current tail-mode setting (mode + Manual length), read by the plain
|
||||
// CAPTURE_ITEM / CAPTURE_TRACK actions when building a CaptureRequest so a capture
|
||||
// applies whatever the panel toggle is set to. Default None (exact bounds) — a
|
||||
|
||||
Reference in New Issue
Block a user