diff --git a/crates/engine/src/cmd/layer_menu.rs b/crates/engine/src/cmd/layer_menu.rs index 455873e0b..e0c4efc72 100644 --- a/crates/engine/src/cmd/layer_menu.rs +++ b/crates/engine/src/cmd/layer_menu.rs @@ -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 { fn delete_all_markers(s: &mut Session, p: &Value) -> Result { 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(); diff --git a/crates/engine/src/tests/markers.rs b/crates/engine/src/tests/markers.rs index 87792390f..40049d6e7 100644 --- a/crates/engine/src/tests/markers.rs +++ b/crates/engine/src/tests/markers.rs @@ -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); -}