From cf09912474cc910fbbc23195b496206e3de60d36 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Wed, 2 Aug 2023 15:32:30 -0600 Subject: [PATCH] fix bug where album card on artist page would occasionally show artist name instead of year --- ui/widgets/gridview.go | 3 +-- ui/widgets/gridviewitem.go | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/ui/widgets/gridview.go b/ui/widgets/gridview.go index b878e57..6b69322 100644 --- a/ui/widgets/gridview.go +++ b/ui/widgets/gridview.go @@ -241,12 +241,11 @@ func (g *GridView) doUpdateItemCard(itemIdx int, card *GridViewItem) { } g.stateMutex.RUnlock() card.Cover.Im.CenterIcon = g.Placeholder - if card.PrevID == item.ID { + if !card.NeedsUpdate(item) { // nothing to do return } card.Update(item) - card.PrevID = item.ID // cancel any previous image fetch (no issues with possible double-invocations) if card.ImgLoadCancel != nil { card.ImgLoadCancel() diff --git a/ui/widgets/gridviewitem.go b/ui/widgets/gridviewitem.go index 01bacb0..4ef8186 100644 --- a/ui/widgets/gridviewitem.go +++ b/ui/widgets/gridviewitem.go @@ -139,10 +139,7 @@ type GridViewItem struct { container *fyne.Container // updated by GridView - Cover *coverImage - - // these fields are used by GridView to track async update tasks - PrevID string + Cover *coverImage ImgLoadCancel context.CancelFunc OnPlay func() @@ -193,13 +190,16 @@ func (g *GridViewItem) createContainer() { g.container = container.New(pad, c) } +func (g *GridViewItem) NeedsUpdate(model GridViewItemModel) bool { + return g.itemID != model.ID || g.secondaryID != model.SecondaryID +} + func (g *GridViewItem) Update(model GridViewItemModel) { g.itemID = model.ID g.secondaryID = model.SecondaryID g.primaryText.SetText(model.Name) - g.secondaryText.SetText(model.Secondary) g.secondaryText.Disabled = model.SecondaryID == "" - g.secondaryText.Refresh() + g.secondaryText.SetText(model.Secondary) g.Cover.ResetPlayButton() }