From 3ea71d51ffbf7b562276bb46201a9c4309ac7202 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Thu, 12 Sep 2019 14:36:43 +0200 Subject: [PATCH] PICARD-1598: Keep selection when updating album in itemview --- picard/ui/itemviews.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index 13c784e98..be8dfc1a7 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -722,18 +722,21 @@ class AlbumItem(TreeItem): def update(self, update_tracks=True): album = self.obj + selection_changed = self.isSelected() if update_tracks: oldnum = self.childCount() - 1 newnum = len(album.tracks) if oldnum > newnum: # remove old items for i in range(oldnum - newnum): + item = self.child(newnum) + selection_changed |= item.isSelected() self.takeChild(newnum) oldnum = newnum # update existing items for i in range(oldnum): item = self.child(i) - item.setSelected(False) track = album.tracks[i] + selection_changed |= item.isSelected() and item.obj != track item.obj = track track.item = item item.update(update_album=False) @@ -765,8 +768,8 @@ class AlbumItem(TreeItem): self.setToolTip(0, _("Album unchanged")) for i, column in enumerate(MainPanel.columns): self.setText(i, album.column(column[1])) - if self.isSelected(): - TreeItem.window.update_selection() + if selection_changed: + TreeItem.window.panel.update_current_view() # Workaround for PICARD-1446: Expand/collapse indicator for the release # is briefly missing on Windows self.emitDataChanged()