fix(script): deselect individual properties via Property.selected=false (#548)

This commit is contained in:
Nigel Ihza Firdausy
2026-10-10 15:58:22 +07:00
parent 813c7c4650
commit 4bc619b010
3 changed files with 46 additions and 1 deletions
+3 -1
View File
@@ -574,7 +574,9 @@ PropertyBase.prototype = {
return false;
},
set selected(v) {
if (v) __call("prop.select", { comp: this.__layer.__comp, layer: this.__layer.__id, prop: this.__uid, add: true });
var ref = { comp: this.__layer.__comp, layer: this.__layer.__id, prop: this.__uid };
if (v) __call("prop.select", { comp: ref.comp, layer: ref.layer, prop: ref.prop, add: true });
else __call("prop.deselect", ref);
},
propertyGroup: function (n) {
var p = this;
+29
View File
@@ -524,3 +524,32 @@ fn comp_preserves_nested_frame_rate_and_resolution() {
let (_, c) = comp_named(&s, "Nested");
assert!(c.preserve_frame_rate && c.preserve_resolution);
}
#[test]
fn property_selected_false_preserves_other_property_and_key_selections() {
let mut s = session();
let out = ok(
&mut s,
r#"
var c = app.project.items.addComp("Selection", 64, 64, 1, 1, 10);
c.openInViewer();
var layer = c.layers.addSolid([1, 0, 0], "Layer", 8, 8, 1);
var opacity = layer.transform.opacity;
var rotation = layer.transform.rotation;
rotation.setValueAtTime(0, 0);
rotation.setValueAtTime(0.5, 45);
app.run("edit.deselectAll", {});
rotation.selected = true;
opacity.selected = true;
var states = [[opacity.selected, rotation.selected]];
opacity.selected = false;
states.push([opacity.selected, rotation.selected]);
opacity.selected = false;
states.push([opacity.selected, rotation.selected]);
opacity.selected = true;
states.push([opacity.selected, rotation.selected]);
[states, rotation.selectedKeys.length, c.selectedProperties.length];
"#,
);
assert_eq!(out.result, json!([[[true, true], [false, true], [false, true], [true, true]], 2, 2]));
}