summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_markers.cc5
-rw-r--r--gtk2_ardour/region_gain_line.cc8
-rw-r--r--gtk2_ardour/regionview.cc6
-rw-r--r--gtk2_ardour/route_ui.cc12
-rw-r--r--libs/ardour/session_transport.cc6
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;