diff --git a/src/DirManager.cpp b/src/DirManager.cpp index 71922a395..5278ce916 100644 --- a/src/DirManager.cpp +++ b/src/DirManager.cpp @@ -400,7 +400,7 @@ DirManager::DirManager() srand(time(NULL)); // Set up local temp subdir - // Previously, Audacity just named project temp directories "project0", + // Previously, Audacity just na med project temp directories "project0", // "project1" and so on. But with the advent of recovery code, we need a // unique name even after a crash. So we create a random project index // and make sure it is not used already. This will not pose any performance diff --git a/src/WaveTrack.cpp b/src/WaveTrack.cpp index 9feded420..b4ef344a3 100644 --- a/src/WaveTrack.cpp +++ b/src/WaveTrack.cpp @@ -530,10 +530,12 @@ void WaveTrack::Trim (double t0, double t1) -WaveTrack::Holder WaveTrack::EmptyCopy() const +WaveTrack::Holder WaveTrack::EmptyCopy( + const std::shared_ptr &pDirManager ) const { auto result = std::make_shared( mDirManager, mFormat, mRate ); result->Init(*this); + result->mDirManager = pDirManager ? pDirManager : mDirManager; return result; } diff --git a/src/WaveTrack.h b/src/WaveTrack.h index c99f249d8..e870434aa 100644 --- a/src/WaveTrack.h +++ b/src/WaveTrack.h @@ -160,7 +160,8 @@ private: // Make another track copying format, rate, color, etc. but containing no // clips - Holder EmptyCopy() const; + Holder EmptyCopy( + const std::shared_ptr &pDirManager = {} ) const; // If forClipboard is true, // and there is no clip at the end time of the selection, then the result diff --git a/src/menus/EditMenus.cpp b/src/menus/EditMenus.cpp index 6a4b550e3..6e14f4f7d 100644 --- a/src/menus/EditMenus.cpp +++ b/src/menus/EditMenus.cpp @@ -2,6 +2,7 @@ #include "../AdornedRulerPanel.h" #include "../Clipboard.h" #include "../CommonCommandFlags.h" +#include "../DirManager.h" #include "../LabelTrack.h" #include "../Menus.h" #include "../NoteTrack.h" @@ -75,6 +76,7 @@ bool DoPasteText(AudacityProject &project) bool DoPasteNothingSelected(AudacityProject &project) { auto &tracks = TrackList::Get( project ); + auto &dirManager = DirManager::Get( project ); auto &trackFactory = TrackFactory::Get( project ); auto &selectedRegion = ViewInfo::Get( project ).selectedRegion; auto &window = ProjectWindow::Get( project ); @@ -101,7 +103,7 @@ bool DoPasteNothingSelected(AudacityProject &project) // Cause duplication of block files on disk, when copy is // between projects locker.emplace(wc); - uNewTrack = wc->EmptyCopy(); + uNewTrack = wc->EmptyCopy( dirManager.shared_from_this() ); pNewTrack = uNewTrack.get(); }, #ifdef USE_MIDI @@ -379,6 +381,7 @@ void OnPaste(const CommandContext &context) { auto &project = context.project; auto &tracks = TrackList::Get( project ); + auto &dirManager = DirManager::Get( project ); auto &trackFactory = TrackFactory::Get( project ); auto &selectedRegion = ViewInfo::Get( project ).selectedRegion; const auto &settings = ProjectSettings::Get( project ); @@ -596,7 +599,7 @@ void OnPaste(const CommandContext &context) wt->ClearAndPaste(t0, t1, wc, true, true); } else { - auto tmp = wt->EmptyCopy(); + auto tmp = wt->EmptyCopy( dirManager.shared_from_this() ); tmp->InsertSilence( 0.0, // MJS: Is this correct? clipboard.Duration() );