diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index feb8f4fd0b..bdea3d39a2 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -30,6 +30,7 @@ #include #include #include +#include #include "streamview.h" #include "audio_region_view.h" @@ -898,18 +899,20 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev) gain_line->view_to_model_y (y); trackview.session().begin_reversible_command (_("add gain control point")); - trackview.session().add_undo (audio_region().envelope().get_memento()); + XMLNode &before = audio_region().envelope().get_state(); if (!audio_region().envelope_active()) { - trackview.session().add_undo( bind( mem_fun(audio_region(), &AudioRegion::set_envelope_active), false) ); + XMLNode &before = audio_region().get_state(); audio_region().set_envelope_active(true); - trackview.session().add_redo( bind( mem_fun(audio_region(), &AudioRegion::set_envelope_active), true) ); + XMLNode &after = audio_region().get_state(); + trackview.session().add_command (new MementoCommand(audio_region(), before, after)); } audio_region().envelope().add (fx, y); - trackview.session().add_redo_no_execute (audio_region().envelope().get_memento()); + XMLNode &after = audio_region().envelope().get_state(); + trackview.session().add_command (new MementoCommand(audio_region().envelope(), before, after)); trackview.session().commit_reversible_command (); } diff --git a/gtk2_ardour/editor_keyboard.cc b/gtk2_ardour/editor_keyboard.cc index a0368b23b0..f48d860d15 100644 --- a/gtk2_ardour/editor_keyboard.cc +++ b/gtk2_ardour/editor_keyboard.cc @@ -108,7 +108,7 @@ Editor::kbd_mute_unmute_region () entered_regionview->region().set_muted (!entered_regionview->region().muted()); XMLNode &after = entered_regionview->region().playlist()->get_state(); - session->add_command (new MementoCommand(*(entered_regionview->region.playlist()), before, after)); + session->add_command (new MementoCommand(*(entered_regionview->region().playlist()), before, after)); commit_reversible_command(); } } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index f7abe7fdea..18c7f0727d 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1823,7 +1823,7 @@ Editor::fade_in_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* even arv->audio_region().set_fade_in_length (fade_length); XMLNode &after = arv->audio_region().get_state(); - session->add_command(new MementoCommand(arv->audio_regio(), + session->add_command(new MementoCommand(arv->audio_region(), before, after)); commit_reversible_command (); @@ -1920,7 +1920,7 @@ Editor::fade_out_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* eve arv->audio_region().set_fade_out_length (fade_length); XMLNode &after = arv->region().get_state(); - session->add_command(new MementoCommand(arv->region(), before, after)); + session->add_command(new MementoCommand(arv->region(), before, after)); commit_reversible_command (); fade_out_drag_motion_callback (item, event); @@ -4234,7 +4234,7 @@ Editor::point_trim (GdkEvent* event) i != selection->regions.by_layer().end(); ++i) { if (!(*i)->region().locked()) { - Playlist *pl = (*i)->region.playlist(); + Playlist *pl = (*i)->region().playlist(); XMLNode &before = pl->get_state(); (*i)->region().trim_front (new_bound, this); XMLNode &after = pl->get_state(); @@ -4829,7 +4829,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, jack_nframes_t pos) double speed = atv->get_diskstream()->speed(); XMLNode &before = playlist->get_state(); - playlist->add_region (*(new AudioRegion (arv->audio_region)), (jack_nframes_t) (pos * speed)); + playlist->add_region (*(new AudioRegion (arv->audio_region())), (jack_nframes_t) (pos * speed)); XMLNode &after = playlist->get_state(); session->add_command(new MementoCommand(*playlist, before, after)); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index d98be4f088..1e5f336e52 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2594,7 +2594,7 @@ Editor::naturalize () XMLNode &before = (*i)->region().get_state(); (*i)->region().move_to_natural_position (this); XMLNode &after = (*i)->region().get_state(); - session->add_command (new MementoCommand((*i)->region(), before, after)); + session->add_command (new MementoCommand((*i)->region(), before, after)); } commit_reversible_command (); } @@ -3401,7 +3401,7 @@ Editor::normalize_region () continue; XMLNode &before = arv->region().get_state(); arv->audio_region().normalize_to (0.0f); - session->add_command (new MementoCommand(arv->region, arv->region().get_state()); + session->add_command (new MementoCommand(arv->region(), before, arv->region().get_state())); } commit_reversible_command (); @@ -3428,7 +3428,7 @@ Editor::denormalize_region () continue; XMLNode &before = arv->region().get_state(); arv->audio_region().set_scale_amplitude (1.0f); - session->add_command (new MementoCommand(arv->region, before, arv->region().get_state()); + session->add_command (new MementoCommand(arv->region(), before, arv->region().get_state())); } commit_reversible_command (); @@ -3473,7 +3473,7 @@ Editor::apply_filter (AudioFilter& filter, string command) if (arv->audio_region().apply (filter) == 0) { XMLNode &before = playlist->get_state(); - playlist->replace_region (arv->region(), *(filter.results.front()), arv->region()position()); + playlist->replace_region (arv->region(), *(filter.results.front()), arv->region().position()); XMLNode &after = playlist->get_state(); session->add_command(new MementoCommand(*playlist, before, after)); } else { diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc index 920d2cdca9..0a4a3d29ea 100644 --- a/gtk2_ardour/region_gain_line.cc +++ b/gtk2_ardour/region_gain_line.cc @@ -49,7 +49,7 @@ AudioRegionGainLine::start_drag (ControlPoint* cp, float fraction) AutomationLine::start_drag(cp,fraction); if (!rv.audio_region().envelope_active()) { trackview.session().add_command(new MementoUndoCommand(rv.audio_region(), rv.audio_region().get_state())); - rv.region.set_envelope_active(false); + rv.audio_region().set_envelope_active(false); } } diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 8dca7be480..82d5b53cba 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -1050,12 +1051,12 @@ RouteTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op) } } + XMLNode &before = playlist->get_state(); switch (op) { case Cut: - _session.add_undo (playlist->get_memento()); if ((what_we_got = playlist->cut (time)) != 0) { editor.get_cut_buffer().add (what_we_got); - _session.add_redo_no_execute (playlist->get_memento()); + _session.add_command( new MementoCommand(*playlist, before, playlist->get_state())); ret = true; } break; @@ -1066,9 +1067,8 @@ RouteTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op) break; case Clear: - _session.add_undo (playlist->get_memento()); if ((what_we_got = playlist->cut (time)) != 0) { - _session.add_redo_no_execute (playlist->get_memento()); + _session.add_command( new MementoCommand(*playlist, before, playlist->get_state())); what_we_got->unref (); ret = true; } @@ -1097,9 +1097,9 @@ RouteTimeAxisView::paste (jack_nframes_t pos, float times, Selection& selection, if (get_diskstream()->speed() != 1.0f) pos = session_frame_to_track_frame(pos, get_diskstream()->speed() ); - _session.add_undo (playlist->get_memento()); + XMLNode &before = playlist->get_state(); playlist->paste (**p, pos, times); - _session.add_redo_no_execute (playlist->get_memento()); + _session.add_command( new MementoCommand(*playlist, before, playlist->get_state())); return true; } diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 8a1fb1c21a..863e73d33e 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -130,7 +130,7 @@ RouteUI::mute_press(GdkEventButton* ev) _session.begin_reversible_command (_("mute change")); Session::GlobalMuteStateCommand *cmd = new Session::GlobalMuteStateCommand(_session, this); - _session.set_all_mute (!_route.muted()); + _session.set_all_mute (!_route->muted()); cmd->mark(); _session.add_command(cmd); _session.commit_reversible_command (); @@ -206,7 +206,7 @@ RouteUI::solo_press(GdkEventButton* ev) _session.begin_reversible_command (_("solo change")); Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand(_session, this); - _session.set_all_solo (!_route.soloed()); + _session.set_all_solo (!_route->soloed()); cmd->mark(); _session.add_command (cmd); _session.commit_reversible_command (); @@ -218,7 +218,7 @@ RouteUI::solo_press(GdkEventButton* ev) _session.begin_reversible_command (_("solo change")); Session::GlobalSoloStateCommand *cmd = new Session::GlobalSoloStateCommand (_session, this); _session.set_all_solo (false); - _route.set_solo (true, this); + _route->set_solo (true, this); cmd->mark(); _session.add_command(cmd); _session.commit_reversible_command (); @@ -572,10 +572,10 @@ void RouteUI::reversibly_apply_route_boolean (string name, void (Route::*func)(bool, void *), bool yn, void *arg) { _session.begin_reversible_command (name); - XMLNode &before = _route.get_state(); - bind(mem_fun(_route, func), yn, arg)(); - XMLNode &after = _route.get_state(); - _session.add_command (new MementoCommand(_route, before, after)); + XMLNode &before = _route->get_state(); + bind(mem_fun(*_route, func), yn, arg)(); + XMLNode &after = _route->get_state(); + _session.add_command (new MementoCommand(*_route, before, after)); _session.commit_reversible_command (); }