From 94b6c7626c6e2b7ceda1ba1302aae2d10fd19e28 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 9 Jun 2012 15:04:24 +0000 Subject: [PATCH] Commit one reversible command for the whole of an import, rather than one per region; makes MIDI imports into multiple tracks undoable in one step (#4788). git-svn-id: svn://localhost/ardour2/branches/3.0@12630 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_audio_import.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 96e42f9f0f..8a7e09df2c 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -827,6 +827,8 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, int n = 0; framepos_t rlen = 0; + begin_reversible_command (Operations::insert_file); + for (vector >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) { boost::shared_ptr ar = boost::dynamic_pointer_cast (*r); @@ -874,6 +876,8 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, } } + commit_reversible_command (); + /* setup peak file building in another thread */ for (SourceList::iterator x = sources.begin(); x != sources.end(); ++x) { @@ -885,7 +889,7 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, int Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t in_chans, uint32_t out_chans, framepos_t& pos, - ImportMode mode, boost::shared_ptr& existing_track) + ImportMode mode, boost::shared_ptr& existing_track) { boost::shared_ptr ar = boost::dynamic_pointer_cast(region); boost::shared_ptr mr = boost::dynamic_pointer_cast(region); @@ -912,11 +916,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t boost::shared_ptr playlist = existing_track->playlist(); boost::shared_ptr copy (RegionFactory::create (region, region->properties())); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); break; } @@ -946,11 +948,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t boost::shared_ptr playlist = existing_track->playlist(); boost::shared_ptr copy (RegionFactory::create (region, true)); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); break; } @@ -964,11 +964,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t if (!at.empty()) { boost::shared_ptr playlist = at.front()->playlist(); boost::shared_ptr copy (RegionFactory::create (region, true)); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); } break; }