diff options
author | David Robillard <d@drobilla.net> | 2014-12-25 15:32:10 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-12-25 15:32:10 -0500 |
commit | 12a7f12b0bcee20b6041b7ece27a120b130271c2 (patch) | |
tree | f6aec813237d2d505662df96d85eee086449d6a4 /gtk2_ardour/editor_ops.cc | |
parent | 6b1c171dc2029f89d3a2cfcc8553a8b10d38e538 (diff) |
Context menu for applying edits to note selection.
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 66 |
1 files changed, 20 insertions, 46 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 64a7d1a059..2327a318d4 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4909,26 +4909,22 @@ Editor::apply_midi_note_edit_op_to_region (MidiOperator& op, MidiRegionView& mrv } void -Editor::apply_midi_note_edit_op (MidiOperator& op) +Editor::apply_midi_note_edit_op (MidiOperator& op, const RegionSelection& rs) { - Command* cmd; - - RegionSelection rs = get_regions_from_selection_and_entered (); - if (rs.empty()) { return; } begin_reversible_command (op.name ()); - for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ) { - RegionSelection::iterator tmp = r; + for (RegionSelection::const_iterator r = rs.begin(); r != rs.end(); ) { + RegionSelection::const_iterator tmp = r; ++tmp; MidiRegionView* const mrv = dynamic_cast<MidiRegionView*> (*r); if (mrv) { - cmd = apply_midi_note_edit_op_to_region (op, *mrv); + Command* cmd = apply_midi_note_edit_op_to_region (op, *mrv); if (cmd) { (*cmd)(); _session->add_command (cmd); @@ -4984,26 +4980,15 @@ Editor::fork_region () void Editor::quantize_region () { - int selected_midi_region_cnt = 0; - - if (!_session) { - return; - } - - RegionSelection rs = get_regions_from_selection_and_entered (); - - if (rs.empty()) { - return; - } - - for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) { - MidiRegionView* const mrv = dynamic_cast<MidiRegionView*> (*r); - if (mrv) { - selected_midi_region_cnt++; - } + if (_session) { + quantize_regions(get_regions_from_selection_and_entered ()); } +} - if (selected_midi_region_cnt == 0) { +void +Editor::quantize_regions (const RegionSelection& rs) +{ + if (rs.n_midi_regions() == 0) { return; } @@ -5018,38 +5003,27 @@ Editor::quantize_region () qd->start_grid_size(), qd->end_grid_size(), qd->strength(), qd->swing(), qd->threshold()); - apply_midi_note_edit_op (quant); + apply_midi_note_edit_op (quant, rs); } } void Editor::legatize_region (bool shrink_only) { - int selected_midi_region_cnt = 0; - - if (!_session) { - return; - } - - RegionSelection rs = get_regions_from_selection_and_entered (); - - if (rs.empty()) { - return; - } - - for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) { - MidiRegionView* const mrv = dynamic_cast<MidiRegionView*> (*r); - if (mrv) { - selected_midi_region_cnt++; - } + if (_session) { + legatize_regions(get_regions_from_selection_and_entered (), shrink_only); } +} - if (selected_midi_region_cnt == 0) { +void +Editor::legatize_regions (const RegionSelection& rs, bool shrink_only) +{ + if (rs.n_midi_regions() == 0) { return; } Legatize legatize(shrink_only); - apply_midi_note_edit_op (legatize); + apply_midi_note_edit_op (legatize, rs); } void |