void UndoManager::ModifyState(TrackList * l, const SelectedRegion &selectedRegion) { if (current == wxNOT_FOUND) { return; } SonifyBeginModifyState(); // Delete current stack[current]->tracks->Clear(true); delete stack[current]->tracks; // Duplicate TrackList *tracksCopy = new TrackList(); TrackListIterator iter(l); Track *t = iter.First(); while (t) { tracksCopy->Add(t->Duplicate()); t = iter.Next(); } // Replace stack[current]->tracks = tracksCopy; stack[current]->selectedRegion = selectedRegion; SonifyEndModifyState(); }
void UndoManager::ModifyState(const TrackList * l, const SelectedRegion &selectedRegion, const std::shared_ptr<Tags> &tags) { if (current == wxNOT_FOUND) { return; } SonifyBeginModifyState(); // Delete current -- not necessary, but let's reclaim space early stack[current]->state.tracks.reset(); // Duplicate auto tracksCopy = std::make_unique<TrackList>(); TrackListConstIterator iter(l); const Track *t = iter.First(); while (t) { tracksCopy->Add(t->Duplicate()); t = iter.Next(); } // Replace stack[current]->state.tracks = std::move(tracksCopy); stack[current]->state.tags = tags; stack[current]->state.selectedRegion = selectedRegion; SonifyEndModifyState(); }
void UndoManager::ModifyState(TrackList * l, double sel0, double sel1) { SonifyBeginModifyState(); // Delete current stack[current]->tracks->Clear(true); delete stack[current]->tracks; // Duplicate TrackList *tracksCopy = new TrackList(); TrackListIterator iter(l); Track *t = iter.First(); while (t) { tracksCopy->Add(t->Duplicate()); t = iter.Next(); } // Replace stack[current]->tracks = tracksCopy; stack[current]->sel0 = sel0; stack[current]->sel1 = sel1; SonifyEndModifyState(); }