diff options
Diffstat (limited to 'gtk2_ardour/midi_region_view.cc')
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index d1c1656ce3..d81c0d76d9 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -41,6 +41,7 @@ #include "evoral/Parameter.hpp" #include "evoral/Control.hpp" +#include "evoral/midi_util.h" #include "automation_region_view.h" #include "automation_time_axis.h" @@ -566,6 +567,10 @@ MidiRegionView::create_note_at(double x, double y, double length) frames_to_beats(start_frames + _region->start()), length, (uint8_t)note, 0x40)); + if (_model->contains (new_note)) { + return; + } + view->update_note_range(new_note->note()); MidiModel::DeltaCommand* cmd = _model->new_delta_command("add note"); @@ -797,8 +802,6 @@ MidiRegionView::redisplay_model() MidiModel::Notes& notes (_model->notes()); _optimization_iterator = _events.begin(); - cerr << "++++++++++ MIDI REdisplay\n"; - for (MidiModel::Notes::iterator n = notes.begin(); n != notes.end(); ++n) { boost::shared_ptr<NoteType> note (*n); @@ -2394,12 +2397,10 @@ MidiRegionView::note_entered(ArdourCanvas::CanvasNoteEvent* ev) note_selected(ev, true); } - char buf[4]; - snprintf (buf, sizeof (buf), "%d", (int) ev->note()->note()); - // This causes an infinite loop on note add sometimes - //PublicEditor& editor (trackview.editor()); - //editor.show_verbose_canvas_cursor_with (Evoral::midi_note_name (ev->note()->note())); - //editor.show_verbose_canvas_cursor_with (buf); + char buf[12]; + snprintf (buf, sizeof (buf), "%s (%d)", Evoral::midi_note_name (ev->note()->note()).c_str(), (int) ev->note()->note()); + PublicEditor& editor (trackview.editor()); + editor.show_verbose_canvas_cursor_with (buf); } void |