Fixed finding of previous/next selectable cell in Table. Fixes #768

pull/294/merge
Oliver 2 years ago
parent ed3ea789e9
commit 09f052e6ca

@ -1337,8 +1337,8 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
} }
var ( var (
previous = func() { previous = func() {
startRow := t.selectedRow startRow, previousRow := t.selectedRow, t.selectedRow
startColumn := t.selectedColumn startColumn, previousColumn := t.selectedColumn, t.selectedColumn
for { for {
cell := t.content.GetCell(t.selectedRow, t.selectedColumn) cell := t.content.GetCell(t.selectedRow, t.selectedColumn)
if cell != nil && !cell.NotSelectable { if cell != nil && !cell.NotSelectable {
@ -1346,10 +1346,18 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
} }
t.selectedColumn-- t.selectedColumn--
if t.selectedColumn < 0 { if t.selectedColumn < 0 {
t.selectedColumn = lastColumn if t.wrapHorizontally {
t.selectedRow-- t.selectedColumn = lastColumn
if t.selectedRow < 0 { t.selectedRow--
t.selectedRow = rowCount - 1 if t.selectedRow < 0 {
if t.wrapVertically {
t.selectedRow = rowCount - 1
} else {
t.selectedRow = 0
}
}
} else {
t.selectedColumn = 0
} }
} }
if t.selectedColumn == startColumn && t.selectedRow == startRow { if t.selectedColumn == startColumn && t.selectedRow == startRow {
@ -1357,12 +1365,16 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
t.selectedRow = 0 t.selectedRow = 0
return return
} }
if t.selectedColumn == previousColumn && t.selectedRow == previousRow {
return
}
previousRow, previousColumn = t.selectedRow, t.selectedColumn
} }
} }
next = func() { next = func() {
startRow := t.selectedRow startRow, previousRow := t.selectedRow, t.selectedRow
startColumn := t.selectedColumn startColumn, previousColumn := t.selectedColumn, t.selectedColumn
for { for {
if t.selectedColumn <= lastColumn { if t.selectedColumn <= lastColumn {
cell := t.content.GetCell(t.selectedRow, t.selectedColumn) cell := t.content.GetCell(t.selectedRow, t.selectedColumn)
@ -1370,21 +1382,33 @@ func (t *Table) InputHandler() func(event *tcell.EventKey, setFocus func(p Primi
return return
} }
} }
if t.selectedColumn >= lastColumn { if t.selectedColumn < lastColumn {
t.selectedColumn = 0 t.selectedColumn++
if t.selectedRow >= rowCount-1 { } else {
t.selectedRow = 0 if t.wrapHorizontally {
t.selectedColumn = 0
if t.selectedRow >= rowCount-1 {
if t.wrapVertically {
t.selectedRow = 0
} else {
t.selectedRow = rowCount - 1
}
} else {
t.selectedRow++
}
} else { } else {
t.selectedRow++ t.selectedColumn = lastColumn
} }
} else {
t.selectedColumn++
} }
if t.selectedColumn == startColumn && t.selectedRow == startRow { if t.selectedColumn == startColumn && t.selectedRow == startRow {
t.selectedColumn = 0 t.selectedColumn = 0
t.selectedRow = 0 t.selectedRow = 0
return return
} }
if t.selectedColumn == previousColumn && t.selectedRow == previousRow {
return
}
previousRow, previousColumn = t.selectedRow, t.selectedColumn
} }
} }

Loading…
Cancel
Save