Merge pull request #1134 from Silvertree2010/fix/h2909-cut-time-and-insert-time-leave-a

Shift selection memory location ends on Cut Time and Insert Time
This commit is contained in:
Brandon Thomas
2026-10-29 21:54:11 -04:00
committed by GitHub
2 changed files with 26 additions and 0 deletions
+6
View File
@@ -163,6 +163,8 @@ fn insert_time(e: &mut Engine, p: &Value) -> Result<Value> {
if m.start >= r.start {
m.start += r.len();
m.end += r.len();
} else if m.end > r.start {
m.end += r.len();
}
}
Ok(json!({"inserted": r.len()}))
@@ -190,6 +192,10 @@ fn cut_time(e: &mut Engine, p: &Value) -> Result<Value> {
if m.start >= r.end {
m.start -= r.len();
m.end -= r.len();
} else if m.end >= r.end {
m.end -= r.len();
} else if m.end > r.start {
m.end = r.start;
}
}
Ok(json!({"removed": r.len()}))
+20
View File
@@ -414,6 +414,26 @@ fn shuffle_lock_and_snap_rules_hold_when_a_call_names_tracks() {
assert!(e.execute("edit.snap_to_grid", &json!({"tracks": [t.0]})).is_err());
}
fn selection_marker(e: &mut Engine, start: i64, end: i64) -> usize {
run(e, "markers.add", json!({"kind": "selection", "start": start, "end": end}));
e.session().markers.len() - 1
}
#[test]
fn cut_and_insert_time_move_the_end_of_a_spanning_selection_memory_location() {
let (mut e, _, _) = engine("slip");
let a = selection_marker(&mut e, 1000, 5000);
let b = selection_marker(&mut e, 1000, 2500);
run(&mut e, "event.cut_time", json!({"start": 2000, "end": 3000}));
let m = &e.session().markers;
assert_eq!((m[a].start, m[a].end), (1000, 4000));
assert_eq!((m[b].start, m[b].end), (1000, 2000));
run(&mut e, "event.insert_time", json!({"start": 2000, "length": 1000}));
let m = &e.session().markers;
assert_eq!((m[a].start, m[a].end), (1000, 5000));
assert_eq!((m[b].start, m[b].end), (1000, 2000));
}
#[test]
fn moving_a_group_left_past_zero_keeps_its_spacing() {
let (mut e, t, ids) = long("slip", &[(500, 100, 0), (2000, 100, 0)]);