fix errors in midi note drag preview (#3446)
git-svn-id: svn://localhost/ardour2/branches/3.0@7793 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
ede4ecbb00
commit
9a8cd09b19
|
@ -3718,11 +3718,13 @@ NoteDrag::motion (GdkEvent *, bool)
|
|||
_cumulative_dx += tdx;
|
||||
_cumulative_dy += tdy;
|
||||
|
||||
_region->move_selection (tdx, tdy, _cumulative_dy);
|
||||
int8_t note_delta = total_dy();
|
||||
|
||||
_region->move_selection (tdx, tdy, note_delta);
|
||||
|
||||
char buf[12];
|
||||
snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (_primary->note()->note() + dy).c_str(),
|
||||
(int) floor (_primary->note()->note() + dy));
|
||||
snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (_primary->note()->note() + note_delta).c_str(),
|
||||
(int) floor (_primary->note()->note() + note_delta));
|
||||
|
||||
_editor->show_verbose_canvas_cursor_with (buf);
|
||||
}
|
||||
|
|
|
@ -92,7 +92,6 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &
|
|||
, _step_edit_cursor (0)
|
||||
, _step_edit_cursor_width (1.0)
|
||||
, _step_edit_cursor_position (0.0)
|
||||
, _earliest_selected_time (Evoral::MaxMusicalTime)
|
||||
, _mouse_state(None)
|
||||
, _pressed_button(0)
|
||||
, _sort_needed (true)
|
||||
|
@ -117,7 +116,6 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &
|
|||
, _diff_command(0)
|
||||
, _ghost_note(0)
|
||||
, _drag_rect (0)
|
||||
, _earliest_selected_time (Evoral::MaxMusicalTime)
|
||||
, _mouse_state(None)
|
||||
, _pressed_button(0)
|
||||
, _sort_needed (true)
|
||||
|
@ -141,7 +139,6 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other)
|
|||
, _diff_command(0)
|
||||
, _ghost_note(0)
|
||||
, _drag_rect (0)
|
||||
, _earliest_selected_time (Evoral::MaxMusicalTime)
|
||||
, _mouse_state(None)
|
||||
, _pressed_button(0)
|
||||
, _sort_needed (true)
|
||||
|
@ -169,7 +166,6 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other, boost::shared_ptr<M
|
|||
, _diff_command(0)
|
||||
, _ghost_note(0)
|
||||
, _drag_rect (0)
|
||||
, _earliest_selected_time (Evoral::MaxMusicalTime)
|
||||
, _mouse_state(None)
|
||||
, _pressed_button(0)
|
||||
, _sort_needed (true)
|
||||
|
@ -1695,7 +1691,6 @@ MidiRegionView::clear_selection_except(ArdourCanvas::CanvasNoteEvent* ev)
|
|||
}
|
||||
|
||||
_selection.clear();
|
||||
_earliest_selected_time = Evoral::MaxMusicalTime;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1832,7 +1827,7 @@ MidiRegionView::note_selected(ArdourCanvas::CanvasNoteEvent* ev, bool add, bool
|
|||
} else {
|
||||
/* find end of latest note selected, select all between that and the start of "ev" */
|
||||
|
||||
Evoral::MusicalTime earliest = DBL_MAX;
|
||||
Evoral::MusicalTime earliest = Evoral::MaxMusicalTime;
|
||||
Evoral::MusicalTime latest = 0;
|
||||
|
||||
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
|
||||
|
@ -1937,25 +1932,9 @@ MidiRegionView::remove_from_selection (CanvasNoteEvent* ev)
|
|||
ev->set_selected (false);
|
||||
ev->hide_velocity ();
|
||||
|
||||
|
||||
if (Evoral::musical_time_equal (ev->note()->time(), _earliest_selected_time)) {
|
||||
|
||||
_earliest_selected_time = Evoral::MaxMusicalTime;
|
||||
|
||||
/* compute new earliest time */
|
||||
|
||||
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
|
||||
if (!Evoral::musical_time_equal ((*i)->note()->time(), _earliest_selected_time) &&
|
||||
(*i)->note()->time() < _earliest_selected_time) {
|
||||
_earliest_selected_time = (*i)->note()->time();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_selection.empty()) {
|
||||
PublicEditor& editor (trackview.editor());
|
||||
editor.get_selection().remove (this);
|
||||
_earliest_selected_time = Evoral::MaxMusicalTime;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1971,10 +1950,6 @@ MidiRegionView::add_to_selection (CanvasNoteEvent* ev)
|
|||
if (_selection.insert (ev).second) {
|
||||
ev->set_selected (true);
|
||||
play_midi_note ((ev)->note());
|
||||
|
||||
if (ev->note()->time() < _earliest_selected_time) {
|
||||
_earliest_selected_time = ev->note()->time();
|
||||
}
|
||||
}
|
||||
|
||||
if (add_mrv_selection) {
|
||||
|
@ -1988,9 +1963,16 @@ MidiRegionView::move_selection(double dx, double dy, double cumulative_dy)
|
|||
{
|
||||
typedef vector<boost::shared_ptr<NoteType> > PossibleChord;
|
||||
PossibleChord to_play;
|
||||
Evoral::MusicalTime earliest = Evoral::MaxMusicalTime;
|
||||
|
||||
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
|
||||
if (Evoral::musical_time_equal ((*i)->note()->time(), _earliest_selected_time)) {
|
||||
if ((*i)->note()->time() < earliest) {
|
||||
earliest = (*i)->note()->time();
|
||||
}
|
||||
}
|
||||
|
||||
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
|
||||
if (Evoral::musical_time_equal ((*i)->note()->time(), earliest)) {
|
||||
to_play.push_back ((*i)->note());
|
||||
}
|
||||
(*i)->move_event(dx, dy);
|
||||
|
|
|
@ -372,7 +372,6 @@ class MidiRegionView : public RegionView
|
|||
ArdourCanvas::SimpleRect* _step_edit_cursor;
|
||||
Evoral::MusicalTime _step_edit_cursor_width;
|
||||
Evoral::MusicalTime _step_edit_cursor_position;
|
||||
Evoral::MusicalTime _earliest_selected_time;
|
||||
|
||||
MouseState _mouse_state;
|
||||
int _pressed_button;
|
||||
|
|
Loading…
Reference in New Issue