make sure to always update itemForID maps for focus traversal
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user