Commit TempoChange undo operation after map update

Tempo Map updates can change a region's position/length, in which case
region-automation may follow the region, and DiskReader:: playlist_ranges_moved
will save additional undo information.

These MementoCommand(s) need to be included in the undo operation.
This commit is contained in:
Robin Gareus 2022-10-23 23:21:08 +02:00
parent f9edc474ef
commit c437d6f886
4 changed files with 17 additions and 17 deletions

View File

@ -1662,9 +1662,9 @@ Editor::toggle_tempo_type ()
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("change tempo type"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
}
@ -1696,9 +1696,9 @@ Editor::toggle_tempo_continues ()
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("change tempo clamp"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void
@ -1729,9 +1729,9 @@ Editor::ramp_to_next_tempo ()
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("changed tempo ramp"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void

View File

@ -7462,9 +7462,9 @@ Editor::define_one_bar (timepos_t const & start, timepos_t const & end)
XMLNode& after (tmap->get_state());
_session->add_command (new Temporal::TempoCommand (_("set tempo from range"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void

View File

@ -490,9 +490,8 @@ Editor::mouse_add_new_tempo_event (timepos_t pos)
map->set_tempo (map->tempo_at (pos), pos);
XMLNode &after = map->get_state();
_session->add_command (new Temporal::TempoCommand (_("add tempo"), &before, &after));
commit_reversible_command ();
TempoMap::update (map);
commit_reversible_command ();
}
//map.dump (cerr);
@ -533,9 +532,9 @@ Editor::mouse_add_new_meter_event (timepos_t pos)
map->set_meter (Meter (bpb, note_type), pos);
_session->add_command (new Temporal::TempoCommand (_("add time signature"), &before, &map->get_state()));
commit_reversible_command ();
TempoMap::update (map);
commit_reversible_command ();
//map.dump (cerr);
}
@ -579,9 +578,9 @@ Editor::mouse_add_bbt_marker_event (timepos_t pos)
map->set_bartime (bbt, marker_dialog.position(), name);
_session->add_command (new Temporal::TempoCommand (_("add BBT marker"), &before, &map->get_state()));
commit_reversible_command ();
TempoMap::update (map);
commit_reversible_command ();
}
@ -657,9 +656,9 @@ Editor::edit_meter_section (Temporal::MeterPoint& section)
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("edit time signature"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void
@ -693,9 +692,9 @@ Editor::edit_bbt (MusicTimePoint& point)
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("edit tempo"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void
@ -730,9 +729,9 @@ Editor::edit_tempo_section (TempoPoint& section)
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("edit tempo"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
}
void
@ -762,9 +761,9 @@ Editor::real_remove_bbt_marker (MusicTimePoint const * point)
tmap->remove_bartime (*point);
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("remove BBT marker"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
return FALSE;
}
@ -778,10 +777,8 @@ Editor::real_remove_tempo_marker (TempoPoint const * section)
tmap->remove_tempo (*section);
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("remove tempo change"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
return FALSE;
}
@ -815,9 +812,8 @@ Editor::real_remove_meter_marker (Temporal::MeterPoint const * section)
tmap->remove_meter (*section);
XMLNode &after = tmap->get_state();
_session->add_command (new Temporal::TempoCommand (_("remove time signature change"), &before, &after));
commit_reversible_command ();
TempoMap::update (tmap);
commit_reversible_command ();
return FALSE;
}

View File

@ -13,7 +13,11 @@ function factory () return function ()
tm:set_tempo (Temporal.Tempo (140, 120, 4), Temporal.timepos_t (0))
tm:set_tempo (Temporal.Tempo (120, 80, 4), Temporal.timepos_t.from_ticks (Temporal.ticks_per_beat * 4))
tm:set_tempo (Temporal.Tempo (80, 80, 4), Temporal.timepos_t.from_ticks (Temporal.ticks_per_beat * 4))
Session:begin_reversible_command ("Change Tempo Map")
Temporal.TempoMap.update (tm)
if not Session:abort_empty_reversible_command () then
Session:commit_reversible_command (nil)
end
tm = nil
-- Abort Edit example