From b4e2096e4eec30f19459cee11edfa80cc7db59a6 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Sat, 7 Dec 2019 16:13:57 +0100 Subject: [PATCH] PICARD-1686: Always keep [non-album tracks] at first position --- picard/ui/itemviews.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/picard/ui/itemviews.py b/picard/ui/itemviews.py index 2a30a8ac3..c793b1798 100644 --- a/picard/ui/itemviews.py +++ b/picard/ui/itemviews.py @@ -724,7 +724,11 @@ class AlbumTreeView(BaseTreeView): self.tagger.album_removed.connect(self.remove_album) def add_album(self, album): - item = AlbumItem(album, True, self) + if isinstance(album, NatAlbum): + item = NatAlbumItem(album, True) + self.insertTopLevelItem(0, item) + else: + item = AlbumItem(album, True, self) item.setIcon(0, AlbumItem.icon_cd) for i, column in enumerate(MainPanel.columns): font = item.font(i) @@ -856,6 +860,19 @@ class AlbumItem(TreeItem): # is briefly missing on Windows self.emitDataChanged() + def __lt__(self, other): + # Always show NAT entry on top, see also NatAlbumItem.__lt__ + if isinstance(other, NatAlbumItem): + return not other.__lt__(self) + return super().__lt__(other) + + +class NatAlbumItem(AlbumItem): + def __lt__(self, other): + # Always show NAT entry on top + order = self.treeWidget().header().sortIndicatorOrder() + return order == QtCore.Qt.AscendingOrder + class TrackItem(TreeItem):