+ if (view->session()->transport_rolling() && my_list->automation_write()) {
+ /* do not paste if this control is in write mode and we're rolling */
+ return false;
+ }
+
+ AutomationType src_type = (AutomationType)slist->parameter().type ();
+ double len = slist->length();
+
+ /* add multi-paste offset if applicable */
+ if (parameter_is_midi (src_type)) {
+ // convert length to samples (incl tempo-ramps)
+ len = DoubleBeatsSamplesConverter (view->session()->tempo_map(), pos).to (len * paste_count);
+ pos += view->editor ().get_paste_offset (pos, paste_count > 0 ? 1 : 0, len);
+ } else {
+ pos += view->editor ().get_paste_offset (pos, paste_count, len);
+ }
+
+ /* convert sample-position to model's unit and position */
+ const double model_pos = _source_relative_time_converter.from (
+ pos - _source_relative_time_converter.origin_b());
+
+ XMLNode& before = my_list->get_state();
+ my_list->paste(*slist, model_pos, DoubleBeatsSamplesConverter (view->session()->tempo_map(), pos));
+ view->session()->add_command(
+ new MementoCommand<ARDOUR::AutomationList>(_line->memento_command_binder(), &before, &my_list->get_state()));
+
+ return true;