mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-10 20:30:11 -06:00
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:
@@ -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()}))
|
||||
|
||||
@@ -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)]);
|
||||
|
||||
Reference in New Issue
Block a user