mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-31 15:48:33 +00:00
Follow-up to #2169: keep layer.deleteAllMarkers layer-only
An empty layers list cleared the composition's markers too (CodeRabbit); the composition-marker menu uses comp.deleteAllMarkers instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
83b4e36e9b
commit
917f312bc2
2 files changed
+2
-23
No files matched your search
@@ -19,10 +19,9 @@ fn has_masks(s: &Session) -> std::result::Result<(), String> {
|
||||
}
|
||||
|
||||
fn has_markers(s: &Session) -> std::result::Result<(), String> {
|
||||
has_layers(s)?;
|
||||
let c = s.active_comp().ok_or("no composition")?;
|
||||
if s.state.selected_layers.is_empty() {
|
||||
if !c.markers.is_empty() { Ok(()) } else { Err("the composition has no markers".into()) }
|
||||
} else if s.state.selected_layers.iter().filter_map(|l| c.layer(*l)).any(|l| !l.markers.is_empty()) {
|
||||
if s.state.selected_layers.iter().filter_map(|l| c.layer(*l)).any(|l| !l.markers.is_empty()) {
|
||||
Ok(())
|
||||
} else {
|
||||
Err("the selected layers have no markers".into())
|
||||
@@ -597,13 +596,6 @@ fn markers_lock(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
|
||||
fn delete_all_markers(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
let (cid, ids) = layers_p(s, p)?;
|
||||
if ids.is_empty() {
|
||||
s.edit("Delete All Markers", None, |proj, _| {
|
||||
proj.comp_mut(cid).ok_or(EngineError::NoComp)?.markers.clear();
|
||||
Ok(())
|
||||
})?;
|
||||
return Ok(Value::Null);
|
||||
}
|
||||
s.edit("Delete All Markers", None, |proj, _| {
|
||||
for l in proj.comp_mut(cid).ok_or(EngineError::NoComp)?.layers.iter_mut_where(|l| ids.contains(&l.id) && !l.markers_locked) {
|
||||
l.markers.clear();
|
||||
|
||||
@@ -208,16 +208,3 @@ fn comp_delete_all_markers_with_undo() {
|
||||
s.execute("edit.redo", json!({})).unwrap();
|
||||
assert!(s.active_comp().unwrap().markers.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn layer_delete_all_markers_without_selection_clears_comp_markers() {
|
||||
let (mut s, _) = setup();
|
||||
s.execute("comp.addMarker", json!({"time": 1.0, "comment": "m1"})).unwrap();
|
||||
s.execute("comp.addMarker", json!({"time": 2.0, "comment": "m2"})).unwrap();
|
||||
s.execute("edit.deselectAll", json!({})).unwrap();
|
||||
assert!(s.state.selected_layers.is_empty());
|
||||
s.execute("layer.deleteAllMarkers", json!({})).unwrap();
|
||||
assert!(s.active_comp().unwrap().markers.is_empty());
|
||||
s.execute("edit.undo", json!({})).unwrap();
|
||||
assert_eq!(s.active_comp().unwrap().markers.len(), 2);
|
||||
}
|
||||
Reference in new issue
Block a user