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:
Brandon ThomasandClaude Opus 5.5 committed 2026-10-31 10:56:36 -04:00
1 parent 83b4e36e9b
commit 917f312bc2
2 files changed
+2 -23

No files matched your search

+2 -10
View File
@@ -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();
-13
View File
@@ -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);
}