- if (regions.front()->region()->data_type() == DataType::AUDIO) {
- // Audio, pop up timefx dialog
- return time_fx (regions, fraction, false);
- } else {
- // MIDI, just stretch
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (®ions.front()->get_time_axis_view());
- if (!rtv)
- return -1;
-
- boost::shared_ptr<Playlist> playlist
- = rtv->track()->playlist();
-
- ARDOUR::TimeFXRequest request;
- request.time_fraction = fraction;
- MidiStretch stretch(*_session, request);
- begin_reversible_command ("midi stretch");
- stretch.run(regions.front()->region());
- playlist->clear_history ();
- playlist->replace_region (regions.front()->region(), stretch.results[0],
- regions.front()->region()->position());
- _session->add_command (new StatefulDiffCommand (playlist));
+ begin_reversible_command (_("stretch/shrink"));
+
+ for (RegionSelection::iterator i = regions.begin(); i != regions.end(); ++i) {
+ if ((*i)->region()->data_type() == DataType::AUDIO) {
+ audio.push_back ((*i)->region());
+ } else if ((*i)->region()->data_type() == DataType::MIDI) {
+ midi.push_back ((*i)->region());
+ }
+ }
+
+ if ((aret = time_fx (audio, fraction, false)) != 0) {