hotfix for flying percussive hits while dragging.
- Hit::position still may not be set correctly, but this patch eliminates the error for now.
This commit is contained in:
parent
cdbf6215c9
commit
ae3c50c495
@ -2578,8 +2578,18 @@ MidiRegionView::move_selection(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::x0() is offset by _position.x, unlike Note::x0() */
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user