From 8f79c9c190bf1fd5451d2392c3c929853363e26d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 15 Jan 2013 15:42:30 +0000 Subject: [PATCH] allow drag-n-drop/copy-n-paste of aux sends git-svn-id: svn://localhost/ardour2/branches/3.0@13847 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/processor_box.cc | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 58c3e6a85b..7bdac0c86d 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -1815,17 +1815,42 @@ ProcessorBox::paste_processor_state (const XMLNodeList& nlist, boost::shared_ptr for (niter = nlist.begin(); niter != nlist.end(); ++niter) { XMLProperty const * type = (*niter)->property ("type"); + XMLProperty const * role = (*niter)->property ("role"); assert (type); + assert (role); boost::shared_ptr p; try { if (type->value() == "meter" || type->value() == "main-outs" || type->value() == "amp" || - type->value() == "intsend" || type->value() == "intreturn") { - /* do not paste meter, main outs, amp or internal send/returns */ + type->value() == "intreturn") { + /* do not paste meter, main outs, amp or internal returns */ continue; + } else if (type->value() == "intsend") { + + /* aux sends are OK, but those used for + * other purposes, are not. + */ + + if (role->value() != "Aux") { + continue; + } + + XMLNode n (**niter); + InternalSend* s = new InternalSend (*_session, _route->pannable(), _route->mute_master(), + boost::shared_ptr(), Delivery::Aux); + + IOProcessor::prepare_for_reset (n, s->name()); + + if (s->set_state (n, Stateful::loading_state_version)) { + delete s; + return; + } + + p.reset (s); + } else if (type->value() == "send") { XMLNode n (**niter);