add focus traversal to genre list in album filter panel
This commit is contained in:
@@ -241,7 +241,11 @@ func NewGenreFilterSubsection(onChanged func([]string), initialSelectedGenres []
|
|||||||
return len(g.genreListViewModel)
|
return len(g.genreListViewModel)
|
||||||
},
|
},
|
||||||
func() fyne.CanvasObject {
|
func() fyne.CanvasObject {
|
||||||
return newGenreListViewRow(g.onGenreSelected)
|
row := newGenreListViewRow(g.onGenreSelected)
|
||||||
|
row.OnFocusNeighbor = func(up bool) {
|
||||||
|
g.genreListView.FocusNeighbor(row.ItemID(), up)
|
||||||
|
}
|
||||||
|
return row
|
||||||
},
|
},
|
||||||
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
func(id widget.ListItemID, obj fyne.CanvasObject) {
|
||||||
g.listModelMutex.RLock()
|
g.listModelMutex.RLock()
|
||||||
@@ -251,9 +255,10 @@ func NewGenreFilterSubsection(onChanged func([]string), initialSelectedGenres []
|
|||||||
_, selected := g.selectedGenres[genre]
|
_, selected := g.selectedGenres[genre]
|
||||||
g.selectedGenresMutex.RUnlock()
|
g.selectedGenresMutex.RUnlock()
|
||||||
row := obj.(*genreListViewRow)
|
row := obj.(*genreListViewRow)
|
||||||
row.ID = id
|
g.genreListView.SetItemForID(id, row)
|
||||||
row.Text = genre
|
row.ListItemID = id
|
||||||
row.Checked = selected
|
row.Content.(*widget.Check).Text = genre
|
||||||
|
row.Content.(*widget.Check).Checked = selected
|
||||||
row.Refresh()
|
row.Refresh()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -361,16 +366,18 @@ func (g *GenreFilterSubsection) CreateRenderer() fyne.WidgetRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type genreListViewRow struct {
|
type genreListViewRow struct {
|
||||||
widget.Check
|
FocusListRowBase
|
||||||
|
|
||||||
ID widget.ListItemID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGenreListViewRow(onChanged func(widget.ListItemID, bool)) *genreListViewRow {
|
func newGenreListViewRow(onChanged func(widget.ListItemID, bool)) *genreListViewRow {
|
||||||
g := &genreListViewRow{}
|
g := &genreListViewRow{}
|
||||||
g.ExtendBaseWidget(g)
|
g.ExtendBaseWidget(g)
|
||||||
g.OnChanged = func(b bool) {
|
g.Content = widget.NewCheck("", func(b bool) {
|
||||||
onChanged(g.ID, b)
|
onChanged(g.ItemID(), b)
|
||||||
|
})
|
||||||
|
g.OnTapped = func() {
|
||||||
|
chk := g.Content.(*widget.Check)
|
||||||
|
chk.SetChecked(!chk.Checked)
|
||||||
}
|
}
|
||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user