fix(script): make Item.selected=false deselect only that item (#544)
This commit is contained in:
parent
813c7c4650
commit
d0489021b5
|
|
@ -1335,7 +1335,18 @@ Item.prototype = {
|
|||
get parentFolder() { return __item(this.__info().parent); },
|
||||
set parentFolder(f) { __call("project.move", { items: [this.__id], folder: f && f.__id ? f.__id : null }); },
|
||||
get selected() { return this.__info().selected; },
|
||||
set selected(v) { if (v) __call("project.select", { items: [this.__id], add: true }); },
|
||||
set selected(v) {
|
||||
var selection = __get("project").selection;
|
||||
var selected = selection.indexOf(this.__id) !== -1;
|
||||
if (!!v === selected) return;
|
||||
if (v) {
|
||||
__call("project.select", { items: [this.__id], add: true });
|
||||
} else {
|
||||
var id = this.__id;
|
||||
// Replace just this item, preserving the other Project panel selections and their order.
|
||||
__call("project.select", { items: selection.filter(function (item) { return item !== id; }) });
|
||||
}
|
||||
},
|
||||
get usedIn() { return this.__info().usedIn.map(function (c) { return new CompItem(c); }); },
|
||||
remove: function () { __call("project.delete", { items: [this.__id] }); },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -524,3 +524,31 @@ fn comp_preserves_nested_frame_rate_and_resolution() {
|
|||
let (_, c) = comp_named(&s, "Nested");
|
||||
assert!(c.preserve_frame_rate && c.preserve_resolution);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn setting_item_selected_false_preserves_other_project_items() {
|
||||
let mut s = session();
|
||||
let o = ok(
|
||||
&mut s,
|
||||
r#"
|
||||
var target = app.project.items.addFolder("Target");
|
||||
var keep = app.project.items.addFolder("Keep");
|
||||
app.run("project.select", {items: []});
|
||||
keep.selected = true;
|
||||
target.selected = true;
|
||||
var states = [[target.selected, keep.selected]];
|
||||
target.selected = false;
|
||||
states.push([target.selected, keep.selected]);
|
||||
target.selected = false; // idempotent: never remove Keep
|
||||
states.push([target.selected, keep.selected]);
|
||||
target.selected = true;
|
||||
states.push([target.selected, keep.selected]);
|
||||
app.project.selection.map(function (item) { return item.name; }).join(",")
|
||||
+ "|" + JSON.stringify(states);
|
||||
"#,
|
||||
);
|
||||
assert_eq!(
|
||||
o.result,
|
||||
json!("Keep,Target|[[true,true],[false,true],[false,true],[true,true]]")
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue