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 ();
{
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);
}
}
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);
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);
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 ();
}
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 ();
}
}
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;