diff --git a/ui/browsing/genrespage.go b/ui/browsing/genrespage.go index c1a928d..611e3e7 100644 --- a/ui/browsing/genrespage.go +++ b/ui/browsing/genrespage.go @@ -197,9 +197,9 @@ func NewGenreList(sorting widgets.ListHeaderSort) *GenreList { }, func(id widget.ListItemID, item fyne.CanvasObject) { row := item.(*GenreListRow) + a.list.SetItemForID(id, row) if row.Item != a.genres[id] { row.EnsureUnfocused() - a.list.SetItemForID(id, row) row.ListItemID = id row.Item = a.genres[id] row.nameLabel.Text = row.Item.Name diff --git a/ui/widgets/gridview.go b/ui/widgets/gridview.go index 4600f59..e3c4b7d 100644 --- a/ui/widgets/gridview.go +++ b/ui/widgets/gridview.go @@ -289,18 +289,18 @@ func (g *GridView) doUpdateItemCard(itemIdx int, card *GridViewItem) { if itemIdx < len(g.items) { item = g.items[itemIdx] } - card.Cover.Im.CenterIcon = g.Placeholder - if !card.NeedsUpdate(item) && card.ItemIndex == itemIdx { - // nothing to do - g.stateMutex.Unlock() - return - } // update itemForIndex map if c, ok := g.itemForIndex[card.ItemIndex]; ok && c == card { delete(g.itemForIndex, card.ItemIndex) } card.ItemIndex = itemIdx g.itemForIndex[itemIdx] = card + card.Cover.Im.CenterIcon = g.Placeholder + if !card.NeedsUpdate(item) && card.ItemIndex == itemIdx { + // nothing to do + g.stateMutex.Unlock() + return + } g.stateMutex.Unlock() card.Update(item) card.ImgLoader.Load(item.CoverArtID) diff --git a/ui/widgets/tracklist.go b/ui/widgets/tracklist.go index bea974b..400cd9c 100644 --- a/ui/widgets/tracklist.go +++ b/ui/widgets/tracklist.go @@ -168,8 +168,8 @@ func NewTracklist(tracks []*mediaprovider.Track) *Tracklist { t.tracksMutex.RUnlock() tr := item.(*TrackRow) + t.list.SetItemForID(itemID, tr) if tr.trackID != model.track.ID || tr.ListItemID != itemID { - t.list.SetItemForID(itemID, tr) tr.ListItemID = itemID } i := -1 // signal that we want to display the actual track num.