fix nil itemForIndex map in initialization of GridView from state

This commit is contained in:
Drew Weymouth
2024-02-15 17:09:43 -08:00
parent b61afb1ba5
commit 93863ad753
+19 -17
View File
@@ -99,31 +99,32 @@ type GridViewState struct {
var _ fyne.Widget = (*GridView)(nil) var _ fyne.Widget = (*GridView)(nil)
func NewFixedGridView(items []GridViewItemModel, fetch util.ImageFetcher, placeholder fyne.Resource) *GridView { func newGridView() *GridView {
g := &GridView{ return &GridView{
GridViewState: GridViewState{
items: items,
done: true,
imageFetcher: fetch,
Placeholder: placeholder,
},
itemWidth: NewGridViewItem(nil).MinSize().Width, itemWidth: NewGridViewItem(nil).MinSize().Width,
itemForIndex: make(map[int]*GridViewItem), itemForIndex: make(map[int]*GridViewItem),
} }
}
func NewFixedGridView(items []GridViewItemModel, fetch util.ImageFetcher, placeholder fyne.Resource) *GridView {
g := newGridView()
g.GridViewState = GridViewState{
items: items,
done: true,
imageFetcher: fetch,
Placeholder: placeholder,
}
g.ExtendBaseWidget(g) g.ExtendBaseWidget(g)
g.createGridWrap() g.createGridWrap()
return g return g
} }
func NewGridView(iter GridViewIterator, fetch util.ImageFetcher, placeholder fyne.Resource) *GridView { func NewGridView(iter GridViewIterator, fetch util.ImageFetcher, placeholder fyne.Resource) *GridView {
g := &GridView{ g := newGridView()
GridViewState: GridViewState{ g.GridViewState = GridViewState{
iter: iter, iter: iter,
imageFetcher: fetch, imageFetcher: fetch,
Placeholder: placeholder, Placeholder: placeholder,
},
itemWidth: NewGridViewItem(nil).MinSize().Width,
itemForIndex: make(map[int]*GridViewItem),
} }
g.ExtendBaseWidget(g) g.ExtendBaseWidget(g)
g.createGridWrap() g.createGridWrap()
@@ -142,7 +143,8 @@ func (g *GridView) SaveToState() *GridViewState {
} }
func NewGridViewFromState(state *GridViewState) *GridView { func NewGridViewFromState(state *GridViewState) *GridView {
g := &GridView{GridViewState: *state} g := newGridView()
g.GridViewState = *state
g.ExtendBaseWidget(g) g.ExtendBaseWidget(g)
g.createGridWrap() g.createGridWrap()
g.Refresh() // needed to initialize the widget g.Refresh() // needed to initialize the widget