diff --git a/widget/gridwrap.go b/widget/gridwrap.go index 03b6b62ca7..95d7097028 100644 --- a/widget/gridwrap.go +++ b/widget/gridwrap.go @@ -281,9 +281,6 @@ func (l *GridWrap) TypedKey(event *fyne.KeyEvent) { if l.currentHighlight <= 0 { return } - if l.currentHighlight%l.ColumnCount() == 0 { - return - } l.RefreshItem(l.currentHighlight) l.currentHighlight-- @@ -293,9 +290,6 @@ func (l *GridWrap) TypedKey(event *fyne.KeyEvent) { if f := l.Length; f != nil && l.currentHighlight >= f()-1 { return } - if (l.currentHighlight+1)%l.ColumnCount() == 0 { - return - } l.RefreshItem(l.currentHighlight) l.currentHighlight++ diff --git a/widget/gridwrap_test.go b/widget/gridwrap_test.go index 73dbd2f637..b2e70f49f7 100644 --- a/widget/gridwrap_test.go +++ b/widget/gridwrap_test.go @@ -253,3 +253,43 @@ func TestGridWrap_ResizeToSameSizeBeforeRender(t *testing.T) { // will crash if GridWrap scroller (not yet created) is accessed g.Resize(fyne.NewSize(0, 0)) } + +func TestGridWrap_TypedKey(t *testing.T) { + gridWrap := createGridWrap(20) + window := test.NewWindow(gridWrap) + defer window.Close() + window.Resize(fyne.NewSize(80, 100)) + + // want 3 columns to make assert navigaiton behavior + assert.Equal(t, 3, gridWrap.ColumnCount()) + + canvas := window.Canvas().(test.WindowlessCanvas) + canvas.FocusNext() + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyDown}) + assert.Equal(t, 3, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyUp}) + assert.Equal(t, 0, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyLeft}) + assert.Equal(t, 0, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyRight}) + assert.Equal(t, 1, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyRight}) + assert.Equal(t, 2, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyRight}) + assert.Equal(t, 3, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyLeft}) + assert.Equal(t, 2, gridWrap.currentHighlight) + + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeySpace}) + assert.Equal(t, []int{2}, gridWrap.selected) + + gridWrap.currentHighlight = 20 + gridWrap.TypedKey(&fyne.KeyEvent{Name: fyne.KeyRight}) + assert.Equal(t, 20, gridWrap.currentHighlight) +}