mirror of
https://github.com/cookiengineer/audacity
synced 2025-09-19 09:30:52 +02:00
Bug 137 (P2) - fix false positive detection of orphaned files that belong to the clipboard (triggered by cut commands)
This commit is contained in:
parent
cd42c0a130
commit
ee9e244b77
@ -910,11 +910,17 @@ BlockFile *DirManager::NewODDecodeBlockFile(
|
|||||||
return newBlockFile;
|
return newBlockFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DirManager::ContainsBlockFile(BlockFile *b) {
|
bool DirManager::ContainsBlockFile(BlockFile *b)
|
||||||
// check what the hash returns in case the blockfile is from a different project
|
{
|
||||||
return b ? mBlockFileHash[b->GetFileName().GetName()] == b : NULL;
|
return b ? mBlockFileHash[b->GetFileName().GetName()] == b : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DirManager::ContainsBlockFile(wxString filepath)
|
||||||
|
{
|
||||||
|
// check what the hash returns in case the blockfile is from a different project
|
||||||
|
return mBlockFileHash[filepath] != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Adds one to the reference count of the block file,
|
// Adds one to the reference count of the block file,
|
||||||
// UNLESS it is "locked", then it makes a new copy of
|
// UNLESS it is "locked", then it makes a new copy of
|
||||||
// the BlockFile.
|
// the BlockFile.
|
||||||
@ -1695,6 +1701,8 @@ void DirManager::FindOrphanBlockFiles(
|
|||||||
const wxArrayString& filePathArray, // input: all files in project directory
|
const wxArrayString& filePathArray, // input: all files in project directory
|
||||||
wxArrayString& orphanFilePathArray) // output: orphan files
|
wxArrayString& orphanFilePathArray) // output: orphan files
|
||||||
{
|
{
|
||||||
|
DirManager *clipboardDM = NULL;
|
||||||
|
|
||||||
for (size_t i = 0; i < filePathArray.GetCount(); i++)
|
for (size_t i = 0; i < filePathArray.GetCount(); i++)
|
||||||
{
|
{
|
||||||
wxFileName fullname = filePathArray[i];
|
wxFileName fullname = filePathArray[i];
|
||||||
@ -1705,7 +1713,20 @@ void DirManager::FindOrphanBlockFiles(
|
|||||||
(fullname.GetExt().IsSameAs(wxT("au")) ||
|
(fullname.GetExt().IsSameAs(wxT("au")) ||
|
||||||
fullname.GetExt().IsSameAs(wxT("auf"))))
|
fullname.GetExt().IsSameAs(wxT("auf"))))
|
||||||
{
|
{
|
||||||
orphanFilePathArray.Add(fullname.GetFullPath());
|
if (!clipboardDM) {
|
||||||
|
TrackList *clipTracks = AudacityProject::GetClipboardTracks();
|
||||||
|
|
||||||
|
if (clipTracks) {
|
||||||
|
TrackListIterator clipIter(clipTracks);
|
||||||
|
Track *track = clipIter.First();
|
||||||
|
if (track)
|
||||||
|
clipboardDM = track->GetDirManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ignore it if it exists in the clipboard (from a previously closed project)
|
||||||
|
if (clipboardDM && clipboardDM->ContainsBlockFile(fullname.GetFullPath()))
|
||||||
|
orphanFilePathArray.Add(fullname.GetFullPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < orphanFilePathArray.GetCount(); i++)
|
for (size_t i = 0; i < orphanFilePathArray.GetCount(); i++)
|
||||||
|
@ -70,8 +70,10 @@ class DirManager: public XMLTagHandler {
|
|||||||
BlockFile *NewODDecodeBlockFile( wxString aliasedFile, sampleCount aliasStart,
|
BlockFile *NewODDecodeBlockFile( wxString aliasedFile, sampleCount aliasStart,
|
||||||
sampleCount aliasLen, int aliasChannel, int decodeType);
|
sampleCount aliasLen, int aliasChannel, int decodeType);
|
||||||
|
|
||||||
/// Returns true if the blockfile is contained by the DirManager
|
/// Returns true if the blockfile pointed to by b is contained by the DirManager
|
||||||
bool ContainsBlockFile(BlockFile *b);
|
bool ContainsBlockFile(BlockFile *b);
|
||||||
|
/// Check for existing using filename using complete filename
|
||||||
|
bool ContainsBlockFile(wxString filepath);
|
||||||
|
|
||||||
// Adds one to the reference count of the block file,
|
// Adds one to the reference count of the block file,
|
||||||
// UNLESS it is "locked", then it makes a new copy of
|
// UNLESS it is "locked", then it makes a new copy of
|
||||||
|
@ -3727,6 +3727,12 @@ void AudacityProject::UpdateMixerBoard()
|
|||||||
// Clipboard methods
|
// Clipboard methods
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//static
|
||||||
|
TrackList *AudacityProject::GetClipboardTracks()
|
||||||
|
{
|
||||||
|
return msClipboard;
|
||||||
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
void AudacityProject::DeleteClipboard()
|
void AudacityProject::DeleteClipboard()
|
||||||
{
|
{
|
||||||
|
@ -275,7 +275,7 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
|
|||||||
void UpdateLayout();
|
void UpdateLayout();
|
||||||
|
|
||||||
// Other commands
|
// Other commands
|
||||||
|
static TrackList *GetClipboardTracks();
|
||||||
static void DeleteClipboard();
|
static void DeleteClipboard();
|
||||||
static void DeleteAllProjectsDeleteLock();
|
static void DeleteAllProjectsDeleteLock();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user