diff --git a/picard/cluster.py b/picard/cluster.py index e61cf6be1..19a71333d 100644 --- a/picard/cluster.py +++ b/picard/cluster.py @@ -114,6 +114,8 @@ class Cluster(QtCore.QObject, Item): self.item.remove_file(file) if not self.special and self.get_num_files() == 0: self.tagger.remove_cluster(self) + + def finalize_remove_files(self): self.update_metadata_images() self._update_related_album() diff --git a/picard/tagger.py b/picard/tagger.py index 56a3bf490..002460685 100644 --- a/picard/tagger.py +++ b/picard/tagger.py @@ -603,12 +603,17 @@ class Tagger(QtWidgets.QApplication): def remove_files(self, files, from_parent=True): """Remove files from the tagger.""" + parents = set() for file in files: if file.filename in self.files: file.clear_lookup_task() self._acoustid.stop_analyze(file) del self.files[file.filename] file.remove(from_parent) + parents.add(file.parent) + if from_parent: + for parent in parents: + parent.finalize_remove_files() def remove_album(self, album): """Remove the specified album.""" diff --git a/picard/track.py b/picard/track.py index 4baac7c78..504be1eb5 100644 --- a/picard/track.py +++ b/picard/track.py @@ -100,6 +100,8 @@ class Track(DataObject, Item): file.copy_metadata(file.orig_metadata, preserve_deleted=False) self.album._remove_file(self, file) file.metadata_images_changed.disconnect(self.update_orig_metadata_images) + + def finalize_remove_files(self): self.update() def update(self):