Merge PR #565: A Pencil click on a MIDI clip selects it, so the MIDI Editor follows

This commit is contained in:
aiongg
2026-10-24 06:53:56 +00:00
2 changed files with 22 additions and 2 deletions
+7 -2
View File
@@ -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),
+15
View File
@@ -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]));
}