diff --git a/src/bank_panel.cpp b/src/bank_panel.cpp index 33a6981..05b4a3f 100644 --- a/src/bank_panel.cpp +++ b/src/bank_panel.cpp @@ -724,10 +724,11 @@ struct ActionBarRow { }; // The TOP toolbar inventory: Capture (item / track / batch items / batch razor / RT) then -// Placement (insert / insert-conform). Capture scopes come from captureActionTable() -// (render_settings, pure); the rest are the registered M11/M6 commands. RECONCILED against the -// actually-REGISTERED commands — "resample-and-mute" / "null-test verify" are not registered -// commands and drag-out is a mouse gesture, so none are placed. Built once per draw/click. +// Placement (insert / insert-conform) then Maintenance (re-capture from source / cancel RT). +// Capture scopes come from captureActionTable() (render_settings, pure); the rest are the +// registered M11/M10/M8 commands. RECONCILED against the actually-REGISTERED commands — +// "resample-and-mute" / "null-test verify" are not registered commands and drag-out is a +// mouse gesture, so none are placed. Built once per draw/click. std::vector topBarRows() { std::vector rows; // Capture cluster — the primary gesture, leftmost. @@ -743,6 +744,10 @@ std::vector topBarRows() { // Placement cluster — the second act (still a distinct on-demand act; no auto-insert). rows.push_back({"INSERT_SELECTED", "Insert", ActionCluster::Placement}); rows.push_back({"INSERT_SELECTED_CONFORM", "Insert Conform", ActionCluster::Placement}); + // Maintenance cluster — rarer upkeep: re-capture from source (M10) and cancel an + // in-flight realtime capture (M8). Capture-adjacent, so they live in the top toolbar. + rows.push_back({"RECAPTURE_FROM_SOURCE", "Re-capture", ActionCluster::Maintenance}); + rows.push_back({"CANCEL_REALTIME_CAPTURE", "Cancel RT", ActionCluster::Maintenance}); return rows; } @@ -769,8 +774,8 @@ std::vector bottomBarRows() { // The cluster button-count specs for a given row set, in the row list's cluster order (so the // pure action_bar's flat index lines up with the row list). Handles all five cluster kinds; // empty clusters contribute a 0-count spec (action_bar skips them, emitting no gap). The spec -// order follows each toolbar's fixed layout order (top: Capture, Placement; bottom: Tagging, -// Switching); Maintenance is retained for completeness though no current toolbar uses it. +// order follows each toolbar's fixed layout order (top: Capture, Placement, Maintenance; +// bottom: Tagging, Switching). std::vector actionBarClusters(const std::vector& rows) { int nCap = 0, nPlace = 0, nMaint = 0, nTag = 0, nSwitch = 0; for (const ActionBarRow& r : rows) {