mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-01 05:58:19 -06:00
Timeline: dragging over layer switches sets them all (#227)
Each layer switch toggled on its own click only, so hiding or locking many layers took a click per layer. As in After Effects, pressing a switch in the A/V Features or Switches column now sets it at once, and dragging up or down gives the same switch of every layer the pointer passes the state the first one got, whatever their own state was (rows passed in a quick drag included). The whole drag is one undo step: layer.setSwitch takes a `merge` key like other gesture edits. A single click still changes only that layer, so clicking the eye of one selected layer doesn't change the others (Layer > Switches still sets all selected layers). Test: dragging_over_layer_switches_sets_them_all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
6b95b7a182
commit
c4c28682eb
@@ -404,7 +404,8 @@ fn set_switch(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
let name = str_p(p, "switch").ok_or_else(|| bad("layer.setSwitch", "missing `switch`"))?.to_string();
|
||||
let v = b_p(p, "value");
|
||||
let label = format!("Layer Switch ({name})");
|
||||
let r = s.edit(&label, None, |proj, _| {
|
||||
// `merge`: a switch dragged over several layers in the Timeline is one undo step.
|
||||
let r = s.edit(&label, merge_p(p), |proj, _| {
|
||||
let comp = proj.comp_mut(cid).ok_or(EngineError::NoComp)?;
|
||||
let mut last = false;
|
||||
// Toggle relative to the first layer so a multi-selection ends up consistent.
|
||||
@@ -1344,7 +1345,7 @@ pub fn specs() -> Vec<CommandSpec> {
|
||||
"Layer Switch",
|
||||
[],
|
||||
None,
|
||||
"{layers?, switch: video|audio|solo|lock|shy|collapse|quality|fx|frameBlend|motionBlur|adjustment|threeD|guide|preserveTransparency, value?}",
|
||||
"{layers?, switch: video|audio|solo|lock|shy|collapse|quality|fx|frameBlend|motionBlur|adjustment|threeD|guide|preserveTransparency, value?, merge?}",
|
||||
has_layers,
|
||||
set_switch
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user