summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-08-13 12:10:34 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-08-13 12:10:34 +0000
commit02e3f7c7696e4792d1e1ce2e49b2517c7446a338 (patch)
tree7740ff74f15c70f0636cec289ae4926718c609c8 /gtk2_ardour/midi_region_view.cc
parent0178875021916feea05a830325c25e9a7db81d34 (diff)
kinda-sorta paste MIDI at the right spot
git-svn-id: svn://localhost/ardour2/branches/3.0@5519 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_region_view.cc')
-rw-r--r--gtk2_ardour/midi_region_view.cc15
1 files changed, 14 insertions, 1 deletions
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<MidiModel::TimeType>::Notes::const_iterator i = mcb.notes().begin(); i != mcb.notes().end(); ++i) {
- cmd->add (boost::shared_ptr<NoteType> (new NoteType (*((*i).get()))));
+
+ boost::shared_ptr<NoteType> 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);