diff --git a/picard/tagger.py b/picard/tagger.py index 98abde09d..f3097f52c 100644 --- a/picard/tagger.py +++ b/picard/tagger.py @@ -664,6 +664,16 @@ class Tagger(QtWidgets.QApplication): self.nats = None self.album_removed.emit(album) + def remove_nat(self, track): + """Remove the specified non-album track.""" + log.debug("Removing %r", track) + self.remove_files(self.get_files_from_objects([track])) + self.nats.tracks.remove(track) + if not self.nats.tracks: + self.remove_album(self.nats) + else: + self.nats.update(True) + def remove_cluster(self, cluster): """Remove the specified cluster.""" if not cluster.special: @@ -681,6 +691,8 @@ class Tagger(QtWidgets.QApplication): for obj in objects: if isinstance(obj, File): files.append(obj) + elif isinstance(obj, NonAlbumTrack): + self.remove_nat(obj) elif isinstance(obj, Track): files.extend(obj.linked_files) elif isinstance(obj, Album): diff --git a/picard/track.py b/picard/track.py index ad4508b62..cc822b062 100644 --- a/picard/track.py +++ b/picard/track.py @@ -298,6 +298,9 @@ class NonAlbumTrack(Track): priority=priority, refresh=refresh) + def can_remove(self): + return True + def _recording_request_finished(self, recording, http, error): if error: self._set_error(http.errorString()) diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index ebd32972a..e75e71749 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -708,11 +708,12 @@ class AlbumItem(TreeItem): newnum = len(album.tracks) if oldnum > newnum: # remove old items for i in range(oldnum - newnum): - self.takeChild(newnum - 1) + self.takeChild(newnum) oldnum = newnum # update existing items for i in range(oldnum): item = self.child(i) + item.setSelected(False) track = album.tracks[i] item.obj = track track.item = item