summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r--gtk2_ardour/editor_ops.cc41
1 files changed, 32 insertions, 9 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 92385e41b7..813ff303de 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -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) ();
+ }
+}