Invert bypass/mute toggle semantics: ON = node runs normally, OFF = bypass/mute (state keys v3)
This commit is contained in:
+13
-11
@@ -48,12 +48,12 @@ function currentRealValue(target, mode) {
|
||||
if (typeof g.recomputeInsideNodes === "function") g.recomputeInsideNodes();
|
||||
const members = g._nodes || [];
|
||||
if (members.length === 0) return false;
|
||||
const m = mode === "bypass" ? 4 : 2;
|
||||
return members.every((n) => n.mode === m);
|
||||
// ON = node runs normally (mode 0); OFF = bypassed/muted
|
||||
return members.every((n) => n.mode === 0);
|
||||
}
|
||||
const targetNode = target.ref;
|
||||
if (mode === "bypass") return targetNode.mode === 4;
|
||||
if (mode === "mute") return targetNode.mode === 2;
|
||||
if (mode === "bypass") return targetNode.mode === 0;
|
||||
if (mode === "mute") return targetNode.mode === 0;
|
||||
// widgets: first boolean widget value
|
||||
const bw = (targetNode.widgets || []).find(
|
||||
(w) => w.type === "BOOLEAN" || w.type === "toggle" || (w.options && w.options.type === "boolean")
|
||||
@@ -74,16 +74,16 @@ function applyValue(target, mode, value) {
|
||||
if (mode === "widgets") return; // groups are never included in widgets mode
|
||||
const g = target.ref;
|
||||
if (typeof g.recomputeInsideNodes === "function") g.recomputeInsideNodes();
|
||||
const m = value ? (mode === "bypass" ? 4 : 2) : 0;
|
||||
const m = value ? 0 : (mode === "bypass" ? 4 : 2);
|
||||
(g._nodes || []).forEach((n) => { n.mode = m; });
|
||||
app.graph.setDirtyCanvas(true, true);
|
||||
return;
|
||||
}
|
||||
const targetNode = target.ref;
|
||||
if (mode === "bypass") {
|
||||
targetNode.mode = value ? 4 : 0;
|
||||
targetNode.mode = value ? 0 : 4;
|
||||
} else if (mode === "mute") {
|
||||
targetNode.mode = value ? 2 : 0;
|
||||
targetNode.mode = value ? 0 : 2;
|
||||
} else {
|
||||
// widgets
|
||||
const bw = (targetNode.widgets || []).find(
|
||||
@@ -166,12 +166,14 @@ function buildPanel(panelNode) {
|
||||
if (!panelNode.properties.switches) {
|
||||
panelNode.properties.switches = {};
|
||||
}
|
||||
// State was previously keyed by name only (shared across modes). Drop
|
||||
// legacy single-name keys; current keys are "<mode>:<name>".
|
||||
// Drop stale state keys: v1 was keyed by name only (shared across modes),
|
||||
// v2 used "<mode>:<name>" with ON = bypass/mute applied semantics. Current
|
||||
// keys are "<mode>:v3:<name>" with ON = node runs normally (switch-panel
|
||||
// semantics: OFF applies bypass/mute).
|
||||
{
|
||||
const legacy = panelNode.properties.switches;
|
||||
for (const k of Object.keys(legacy)) {
|
||||
if (!k.includes(":")) delete legacy[k];
|
||||
if (!k.includes(":v3:")) delete legacy[k];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +277,7 @@ function buildPanel(panelNode) {
|
||||
// Toggle — state is persisted per (mode, name) so bypass/mute/widgets
|
||||
// never share each other's on/off state.
|
||||
const toggle = createToggle(disabled);
|
||||
const stateKey = mode + ":" + name;
|
||||
const stateKey = mode + ":v3:" + name;
|
||||
const saved = switches[stateKey];
|
||||
let isOn;
|
||||
if (saved !== undefined) {
|
||||
|
||||
Reference in New Issue
Block a user