From dcceaca13cefc6416b42b66fb8667371471aed29 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sat, 20 Feb 2016 12:32:49 -0500 Subject: [PATCH] Envelope bug --- src/Envelope.h | 1 + src/WaveClip.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Envelope.h b/src/Envelope.h index 1e8c017d2..ab83f4e1c 100644 --- a/src/Envelope.h +++ b/src/Envelope.h @@ -125,6 +125,7 @@ class Envelope final : public XMLTagHandler { // Handling Cut/Copy/Paste events void CollapseRegion(double t0, double t1); + // Takes absolute times, NOT offset-relative: void CopyFrom(const Envelope * e, double t0, double t1); void Paste(double t0, const Envelope *e); void InsertSpace(double t0, double tlen); diff --git a/src/WaveClip.cpp b/src/WaveClip.cpp index 5b3255b8e..7f371fa79 100644 --- a/src/WaveClip.cpp +++ b/src/WaveClip.cpp @@ -1397,7 +1397,9 @@ bool WaveClip::CreateFromCopy(double t0, double t1, const WaveClip* other) } mEnvelope = std::make_unique(); - mEnvelope->CopyFrom(other->mEnvelope.get(), (double)s0/mRate, (double)s1/mRate); + mEnvelope->CopyFrom(other->mEnvelope.get(), + mOffset + (double)s0/mRate, + mOffset + (double)s1/mRate); MarkChanged(); @@ -1546,6 +1548,7 @@ bool WaveClip::ClearAndAddCutLine(double t0, double t1) if (clip_t1 > GetEndTime()) clip_t1 = GetEndTime(); + newClip->SetOffset(this->mOffset); if (!newClip->CreateFromCopy(clip_t0, clip_t1, this)) return false; newClip->SetOffset(clip_t0-mOffset);