From f4a6644a827fd8da95e62ecfbbbf683b3ce35bc2 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 29 Sep 2018 22:26:45 +0200 Subject: Clear canvas if master file is being removed from the file list. --- src/canvas.cc | 11 +++++++++++ src/filelist.cc | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/src/canvas.cc b/src/canvas.cc index b9356d6..5542332 100644 --- a/src/canvas.cc +++ b/src/canvas.cc @@ -92,11 +92,22 @@ void Canvas::load(QString file) mipmap = NULL; } + if(file == "") + { + // Just clear the canvas + updateWav(); + update(); + return; + } + SF_INFO sf_info; SNDFILE *fh = sf_open(file.toStdString().c_str(), SFM_READ, &sf_info); if(!fh) { printf("Canvas load error '%s'\n", file.toStdString().c_str()); + // Just clear the canvas + updateWav(); + update(); return; } diff --git a/src/filelist.cc b/src/filelist.cc index 7b2ec2b..b9b1462 100644 --- a/src/filelist.cc +++ b/src/filelist.cc @@ -475,6 +475,12 @@ void FileList::removeFile() { auto audiofile_ids = instrument.getAudioFileList(); auto audiofile_id = audiofile_ids.begin() + currentIndex().row(); + auto& audiofile = instrument.getAudioFile(*audiofile_id); + if(instrument.getMasterFile() == audiofile.getAbsoluteFile()) + { + emit masterFileChanged(""); // Clear canvas + } + instrument.deleteAudioFile(*audiofile_id); //emit fileRemoved(file, name); @@ -490,5 +496,6 @@ void FileList::removeAllFiles() } reset(); + emit masterFileChanged(""); // Clear canvas emit allFilesRemoved(); } -- cgit v1.2.3