diff options
-rw-r--r-- | gtk2_ardour/editor_markers.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/region_gain_line.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/regionview.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 12 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 6 |
5 files changed, 24 insertions, 13 deletions
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 5be9cc2747..0610b6aa9f 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -906,10 +906,11 @@ Editor::new_transport_marker_menu_set_punch () XMLNode &after = session->locations()->get_state(); session->add_command (MementoCommand<Locations>(*(session->locations()), before, after)); } else { - session->add_undo (retype_return<void>(bind (mem_fun (*tpl, &Location::set), tpl->start(), tpl->end()))); - session->add_redo (retype_return<void>(bind (mem_fun (*tpl, &Location::set), temp_location->start(), temp_location->end()))); + XMLNode &before = tpl->get_state(); tpl->set_hidden(false, this); tpl->set(temp_location->start(), temp_location->end()); + XMLNode &after = tpl->get_state(); + session->add_command (MementoCommand<Location>(*tpl, before, after)); } commit_reversible_command (); diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc index 54b7fa5b56..526e8844ef 100644 --- a/gtk2_ardour/region_gain_line.cc +++ b/gtk2_ardour/region_gain_line.cc @@ -47,7 +47,8 @@ AudioRegionGainLine::start_drag (ControlPoint* cp, float fraction) { AutomationLine::start_drag(cp,fraction); if (!rv.region.envelope_active()) { - trackview.session().add_undo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), false) ); + trackview.session().add_command(MementoUndoCommand<AudioRegion>(rv.region, rv.region.get_state())); + rv.region.set_envelope_active(false); } } @@ -63,9 +64,10 @@ AudioRegionGainLine::remove_point (ControlPoint& cp) XMLNode &before = get_state(); if (!rv.region.envelope_active()) { - trackview.session().add_undo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), false) ); - trackview.session().add_redo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), true) ); + XMLNode &before = rv.region.get_state(); rv.region.set_envelope_active(true); + XMLNode &after = rv.region.get_state(); + trackview.session().add_command(MementoCommand<AudioRegion>(rv.region, before, after)); } alist.erase (mr.start, mr.end); diff --git a/gtk2_ardour/regionview.cc b/gtk2_ardour/regionview.cc index fbd69105df..b8658d2e00 100644 --- a/gtk2_ardour/regionview.cc +++ b/gtk2_ardour/regionview.cc @@ -1148,9 +1148,11 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev) if (!region.envelope_active()) { - trackview.session().add_undo( bind( mem_fun(region, &AudioRegion::set_envelope_active), false) ); + XMLNode &before, &after; + before = region.get_state(); region.set_envelope_active(true); - trackview.session().add_redo( bind( mem_fun(region, &AudioRegion::set_envelope_active), true) ); + after = region.get_state(); + trackview.session().add_command(MementoCommand<AudioRegion>(region, before, after)); } region.envelope().add (fx, y); diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 4559058b8d..84aeb9c73b 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -570,8 +570,10 @@ void RouteUI::reversibly_apply_route_boolean (string name, void (Route::*func)(bool, void *), bool yn, void *arg) { _session.begin_reversible_command (name); - _session.add_undo (bind (mem_fun (_route, func), !yn, (void *) arg)); - _session.add_redo (bind (mem_fun (_route, func), yn, (void *) arg)); + XMLNode &before = _route.get_state(); + bind(mem_fun(_route, func), yn, arg)(); + XMLNode &after = _route.get_state(); + _session.add_command (MementoCommand<Route>(_route, before, after)); _session.commit_reversible_command (); } @@ -579,8 +581,10 @@ void RouteUI::reversibly_apply_audio_track_boolean (string name, void (AudioTrack::*func)(bool, void *), bool yn, void *arg) { _session.begin_reversible_command (name); - _session.add_undo (bind (mem_fun (*audio_track(), func), !yn, (void *) arg)); - _session.add_redo (bind (mem_fun (*audio_track(), func), yn, (void *) arg)); + XMLNode &before = audio_track()->get_state(); + bind (mem_fun (*audio_track(), func), yn, arg)(); + XMLNode &after = audio_track()->get_state(); + _session.add_command (MementoCommand<AudioTrack>(*audio_track(), before, after)); _session.commit_reversible_command (); } diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 376dee11a2..1d3da72ad8 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -320,8 +320,10 @@ Session::non_realtime_stop (bool abort) } if (change_end) { - add_undo (sigc::retype_return<void>(sigc::bind (mem_fun (*loc, &Location::set_end), loc->end()))); - add_redo (sigc::retype_return<void>(sigc::bind (mem_fun (*loc, &Location::set_end), _transport_frame))); + XMLNode &before = loc->get_state(); + loc->set_end(_transport_frame); + XMLNode &after = loc->get_state(); + add_command (MementoCommand<Location>(*loc, before, after)); } _end_location_is_free = false; |