diff options
author | nick_m <mainsbridge@gmail.com> | 2017-02-24 01:11:56 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2017-02-24 01:11:56 +1100 |
commit | 62cef7feff290d679bae522d1389ca07ca6a7cb5 (patch) | |
tree | fae038f19ba5e0658944fbe4532919590d7df9e7 /gtk2_ardour | |
parent | ae3c50c495ffadbc62103cc1d3a61af2b48f423e (diff) |
also fix flying percussive hits while copy-dragging.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 58db852659..2ce865e3b0 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -2675,8 +2675,17 @@ MidiRegionView::move_copies (double dx_qn, double dy, double cumulative_dy) to_play.push_back (n->note()); } double const note_time_qn = session_relative_qn (n->note()->time().to_double()); - double const dx = editor->sample_to_pixel_unrounded (tmap.frame_at_quarter_note (note_time_qn + dx_qn)) - - n->item()->item_to_canvas (ArdourCanvas::Duple (n->x0(), 0)).x; + double dx = 0.0; + if (midi_view()->note_mode() == Sustained) { + dx = editor->sample_to_pixel_unrounded (tmap.frame_at_quarter_note (note_time_qn + dx_qn)) + - n->item()->item_to_canvas (ArdourCanvas::Duple (n->x0(), 0)).x; + } else { + Hit* hit = dynamic_cast<Hit*>(n); + if (hit) { + dx = editor->sample_to_pixel_unrounded (tmap.frame_at_quarter_note (note_time_qn + dx_qn)) + - n->item()->item_to_canvas (ArdourCanvas::Duple (((hit->x0() + hit->x1()) / 2.0) - hit->position().x, 0)).x; + } + } (*i)->move_event(dx, dy); |