Various marker undo fixes.
git-svn-id: svn://localhost/trunk/ardour2@413 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
ff5f867784
commit
d63c0fa328
|
@ -810,7 +810,13 @@ Editor::marker_menu_rename ()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
begin_reversible_command ( _("rename marker") );
|
||||||
|
session->add_undo( session->locations()->get_memento() );
|
||||||
|
|
||||||
loc->set_name (entry.get_text());
|
loc->set_name (entry.get_text());
|
||||||
|
|
||||||
|
session->add_redo_no_execute( session->locations()->get_memento() );
|
||||||
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
|
|
|
@ -2112,10 +2112,20 @@ Editor::marker_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
||||||
|
|
||||||
Marker* marker = (Marker *) drag_info.data;
|
Marker* marker = (Marker *) drag_info.data;
|
||||||
bool is_start;
|
bool is_start;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
begin_reversible_command ( _("move marker") );
|
||||||
|
session->add_undo( session->locations()->get_memento() );
|
||||||
|
|
||||||
Location * location = find_location_from_marker (marker, is_start);
|
Location * location = find_location_from_marker (marker, is_start);
|
||||||
|
|
||||||
if (location) {
|
if (location) {
|
||||||
location->set (drag_info.copied_location->start(), drag_info.copied_location->end());
|
location->set (drag_info.copied_location->start(), drag_info.copied_location->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
session->add_redo_no_execute( session->locations()->get_memento() );
|
||||||
|
commit_reversible_command ();
|
||||||
|
|
||||||
marker_drag_line->hide();
|
marker_drag_line->hide();
|
||||||
range_marker_drag_rect->hide();
|
range_marker_drag_rect->hide();
|
||||||
|
|
|
@ -1250,7 +1250,16 @@ TempoMap::set_state (const XMLNode& node)
|
||||||
|
|
||||||
in_set_state = false;
|
in_set_state = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This state needs to be saved. This string will never be a part of the
|
||||||
|
object's history though, because the allow_save flag is false during
|
||||||
|
session load. This state will eventually be tagged "initial state",
|
||||||
|
by a call to StateManager::allow_save from Session::set_state.
|
||||||
|
|
||||||
|
If this state is not saved, there is no way to reach it through undo actions.
|
||||||
|
*/
|
||||||
|
save_state(_("load XML data"));
|
||||||
|
|
||||||
send_state_changed (Change (0));
|
send_state_changed (Change (0));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1287,7 +1296,24 @@ TempoMap::restore_state (StateManager::State& state)
|
||||||
|
|
||||||
TempoMapState* tmstate = dynamic_cast<TempoMapState*> (&state);
|
TempoMapState* tmstate = dynamic_cast<TempoMapState*> (&state);
|
||||||
|
|
||||||
metrics = tmstate->metrics;
|
/* We can't just set the metrics pointer to the address of the metrics list
|
||||||
|
stored in the state, cause this would ruin this state for restoring in
|
||||||
|
the future. If they have the same address, they are the same list.
|
||||||
|
Thus we need to copy all the elements from the state metrics list to the
|
||||||
|
current metrics list.
|
||||||
|
*/
|
||||||
|
metrics->clear();
|
||||||
|
for (Metrics::iterator i = tmstate->metrics->begin(); i != tmstate->metrics->end(); ++i) {
|
||||||
|
TempoSection *ts;
|
||||||
|
MeterSection *ms;
|
||||||
|
|
||||||
|
if ((ts = dynamic_cast<TempoSection*>(*i)) != 0) {
|
||||||
|
metrics->push_back (new TempoSection (*ts));
|
||||||
|
} else if ((ms = dynamic_cast<MeterSection*>(*i)) != 0) {
|
||||||
|
metrics->push_back (new MeterSection (*ms));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
last_bbt_valid = false;
|
last_bbt_valid = false;
|
||||||
|
|
||||||
return Change (0);
|
return Change (0);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user