mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-15 19:16:40 +01:00
changes to deal with region/note selection when changing into/out of internal edit mode
Also, activate MIDI editing actions so that they are effective in internal edit mode
This commit is contained in:
parent
921e3e75b5
commit
65f7a6a938
9 changed files with 123 additions and 13 deletions
|
|
@ -4437,17 +4437,21 @@ void
|
|||
Editor::cut_copy_midi (CutCopyOp op)
|
||||
{
|
||||
Temporal::Beats earliest = std::numeric_limits<Temporal::Beats>::max();
|
||||
for (MidiRegionSelection::iterator i = selection->midi_regions.begin(); i != selection->midi_regions.end(); ++i) {
|
||||
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
|
||||
if (mrv) {
|
||||
if (!mrv->selection().empty()) {
|
||||
earliest = std::min(earliest, (*mrv->selection().begin())->note()->time());
|
||||
}
|
||||
mrv->cut_copy_clear (op);
|
||||
|
||||
/* XXX: not ideal, as there may be more than one track involved in the selection */
|
||||
_last_cut_copy_source_track = &mrv->get_time_axis_view();
|
||||
MidiRegionSelection ms = selection->midi_regions ();
|
||||
cerr << "CCM, mrv = " << ms.size() << endl;
|
||||
|
||||
for (MidiRegionSelection::iterator i = ms.begin(); i != ms.end(); ++i) {
|
||||
|
||||
MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (*i);
|
||||
|
||||
if (!mrv->selection().empty()) {
|
||||
earliest = std::min(earliest, (*mrv->selection().begin())->note()->time());
|
||||
}
|
||||
mrv->cut_copy_clear (op);
|
||||
|
||||
/* XXX: not ideal, as there may be more than one track involved in the selection */
|
||||
_last_cut_copy_source_track = &mrv->get_time_axis_view();
|
||||
}
|
||||
|
||||
if (!selection->points.empty()) {
|
||||
|
|
@ -8562,3 +8566,22 @@ Editor::toggle_layer_display ()
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
Editor::midi_action (void (MidiRegionView::*method)())
|
||||
{
|
||||
MidiRegionSelection ms = selection->midi_regions();
|
||||
|
||||
cerr << "MIDI action with " << ms.size() << " midi regions\n";
|
||||
|
||||
for (MidiRegionSelection::iterator i = ms.begin(); i != ms.end(); ++i) {
|
||||
|
||||
MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (*i);
|
||||
|
||||
if (!mrv) {
|
||||
continue;
|
||||
}
|
||||
|
||||
(mrv->*method) ();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue