summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2018-09-29 22:26:45 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2018-09-29 23:58:28 +0200
commitf4a6644a827fd8da95e62ecfbbbf683b3ce35bc2 (patch)
tree9b1c27efee0b8e8a73e00d2da4e2f705fbfb426a
parentcc8d62af149323752ed6a6ea0fb3b6b7407ea77b (diff)
Clear canvas if master file is being removed from the file list.
-rw-r--r--src/canvas.cc11
-rw-r--r--src/filelist.cc7
2 files changed, 18 insertions, 0 deletions
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();
}