midi note paste undo fix.
authorRobin Gareus <robin@gareus.org>
Sun, 25 Jan 2015 00:55:36 +0000 (01:55 +0100)
committerRobin Gareus <robin@gareus.org>
Sun, 25 Jan 2015 00:56:19 +0000 (01:56 +0100)
gtk2_ardour/midi_region_view.cc

index ad7b618f5d3c79cf1b3b429bb5717de7f8318939..e3179e0f9494dbf9eed994a762849b036e791bd7 100644 (file)
@@ -3425,10 +3425,12 @@ MidiRegionView::selection_as_cut_buffer () const
 bool
 MidiRegionView::paste (framepos_t pos, const ::Selection& selection, PasteContext& ctx)
 {
+       bool commit = false;
        // Paste notes, if available
        MidiNoteSelection::const_iterator m = selection.midi_notes.get_nth(ctx.counts.n_notes());
        if (m != selection.midi_notes.end()) {
                ctx.counts.increase_n_notes();
+               if (!(*m)->empty()) { commit = true; }
                paste_internal(pos, ctx.count, ctx.times, **m);
        }
 
@@ -3436,9 +3438,14 @@ MidiRegionView::paste (framepos_t pos, const ::Selection& selection, PasteContex
        typedef RouteTimeAxisView::AutomationTracks ATracks;
        const ATracks& atracks = midi_view()->automation_tracks();
        for (ATracks::const_iterator a = atracks.begin(); a != atracks.end(); ++a) {
-               a->second->paste(pos, selection, ctx);
+               if (a->second->paste(pos, selection, ctx)) {
+                       commit = true;
+               }
        }
 
+       if (commit) {
+               trackview.editor().commit_reversible_command ();
+       }
        return true;
 }