From 02e3f7c7696e4792d1e1ce2e49b2517c7446a338 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 13 Aug 2009 12:10:34 +0000 Subject: kinda-sorta paste MIDI at the right spot git-svn-id: svn://localhost/ardour2/branches/3.0@5519 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/midi_region_view.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'gtk2_ardour/midi_region_view.cc') diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 7482981b71..0fce012374 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -1721,8 +1721,21 @@ void MidiRegionView::paste (nframes64_t pos, const MidiCutBuffer& mcb) { MidiModel::DeltaCommand* cmd = _model->new_delta_command("paste"); + MidiModel::TimeType beat_delta; + nframes64_t paste_pos_beats; + + paste_pos_beats = frames_to_beats (pos); + beat_delta = mcb.notes().front()->time() - paste_pos_beats; + + cerr << "For paste @ " << pos << " beats = " << paste_pos_beats + << " first pasted note @ " << mcb.notes().front()->time() + << " ... delta = " << beat_delta << endl; + for (Evoral::Sequence::Notes::const_iterator i = mcb.notes().begin(); i != mcb.notes().end(); ++i) { - cmd->add (boost::shared_ptr (new NoteType (*((*i).get())))); + + boost::shared_ptr copied_note (new NoteType (*((*i).get()))); + copied_note->set_time (copied_note->time() - beat_delta); + cmd->add (copied_note); } _model->apply_command(trackview.session(), cmd); -- cgit v1.2.3