mirror of
https://github.com/storytold/soundcraft.git
synced 2026-11-03 00:41:02 -06:00
Merge PR #565: A Pencil click on a MIDI clip selects it, so the MIDI Editor follows
This commit is contained in:
@@ -2327,8 +2327,13 @@ fn lane_interaction(app: &mut SoundApp, ui: &mut Ui, track: &Track, lane: Rect,
|
||||
"automation.set_point",
|
||||
json!({"track": track.id.0, "param": automation_id(param), "at": at, "value": lo + (hi - lo) * k}),
|
||||
);
|
||||
} else if track.kind.is_midi() && hit.is_none() {
|
||||
new_midi_clip(app, &s, track.id, at, at);
|
||||
} else if track.kind.is_midi() {
|
||||
match &hit {
|
||||
Some(c) => {
|
||||
let _ = app.run("edit.select", json!({"clips": [c.id.0]}));
|
||||
}
|
||||
None => new_midi_clip(app, &s, track.id, at, at),
|
||||
}
|
||||
}
|
||||
}
|
||||
_ if !selector_press => place_insertion(app, ui, &s, track.id, at, mods.shift),
|
||||
|
||||
@@ -135,3 +135,18 @@ fn a_click_in_the_empty_midi_editor_adds_a_clip_at_the_insertion_point() {
|
||||
assert_eq!(r.clips(), vec![(r.bar(3), r.bar(4))]);
|
||||
assert_eq!(midi_editor::target_clip(&r.app), Some(r.app.engine.session().tracks[0].clips()[0].id));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_pencil_click_on_a_clip_selects_it_for_the_midi_editor() {
|
||||
let mut r = Rig::new("instrument");
|
||||
r.app.ui.show_midi_editor = true;
|
||||
r.drag((r.bar(2) + r.bar(3)) / 2, (r.bar(3) + r.bar(4)) / 2);
|
||||
r.drag((r.bar(6) + r.bar(7)) / 2, (r.bar(7) + r.bar(8)) / 2);
|
||||
let ids: Vec<_> = r.app.engine.session().tracks[0].clips().iter().map(|c| c.id).collect();
|
||||
assert_eq!(r.clips(), vec![(r.bar(2), r.bar(4)), (r.bar(6), r.bar(8))]);
|
||||
assert_eq!(midi_editor::target_clip(&r.app), Some(ids[1]));
|
||||
r.click((r.bar(2) + r.bar(3)) / 2);
|
||||
assert_eq!(r.clips().len(), 2);
|
||||
assert_eq!(r.app.engine.session().edit.selected_clips, vec![ids[0]]);
|
||||
assert_eq!(midi_editor::target_clip(&r.app), Some(ids[0]));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user