mirror of https://github.com/rivo/tview.git
Only moving the cursor up or down in the text area will preserve the desired column position.
This commit is contained in:
parent
941f8605ec
commit
4664d8bf22
14
textarea.go
14
textarea.go
|
@ -1220,7 +1220,13 @@ func (t *TextArea) truncateLines(fromLine int) {
|
|||
// indicating the lowest row in which searching should start. Set this to 0 if
|
||||
// you don't have any information where the cursor might be (but know that this
|
||||
// is expensive for long texts).
|
||||
//
|
||||
// The cursor's desired column will be set to its actual column.
|
||||
func (t *TextArea) findCursor(clamp bool, startRow int) {
|
||||
defer func() {
|
||||
t.cursor.column = t.cursor.actualColumn
|
||||
}()
|
||||
|
||||
if !clamp && t.cursor.row >= 0 {
|
||||
return // Nothing to do.
|
||||
}
|
||||
|
@ -1783,7 +1789,9 @@ func (t *TextArea) InputHandler() func(event *tcell.EventKey, setFocus func(p Pr
|
|||
case tcell.KeyDown: // Move one row down.
|
||||
if event.Modifiers()&tcell.ModAlt == 0 {
|
||||
// Regular movement.
|
||||
column := t.cursor.column
|
||||
t.moveCursor(t.cursor.row+1, t.cursor.column)
|
||||
t.cursor.column = column
|
||||
if event.Modifiers()&tcell.ModShift == 0 {
|
||||
t.selectionStart = t.cursor
|
||||
}
|
||||
|
@ -1803,7 +1811,9 @@ func (t *TextArea) InputHandler() func(event *tcell.EventKey, setFocus func(p Pr
|
|||
case tcell.KeyUp: // Move one row up.
|
||||
if event.Modifiers()&tcell.ModAlt == 0 {
|
||||
// Regular movement.
|
||||
column := t.cursor.column
|
||||
t.moveCursor(t.cursor.row-1, t.cursor.column)
|
||||
t.cursor.column = column
|
||||
if event.Modifiers()&tcell.ModShift == 0 {
|
||||
t.selectionStart = t.cursor
|
||||
}
|
||||
|
@ -1825,12 +1835,16 @@ func (t *TextArea) InputHandler() func(event *tcell.EventKey, setFocus func(p Pr
|
|||
t.selectionStart = t.cursor
|
||||
}
|
||||
case tcell.KeyPgDn, tcell.KeyCtrlF: // Move one page down.
|
||||
column := t.cursor.column
|
||||
t.moveCursor(t.cursor.row+t.lastHeight, t.cursor.column)
|
||||
t.cursor.column = column
|
||||
if event.Modifiers()&tcell.ModShift == 0 {
|
||||
t.selectionStart = t.cursor
|
||||
}
|
||||
case tcell.KeyPgUp, tcell.KeyCtrlB: // Move one page up.
|
||||
column := t.cursor.column
|
||||
t.moveCursor(t.cursor.row-t.lastHeight, t.cursor.column)
|
||||
t.cursor.column = column
|
||||
if event.Modifiers()&tcell.ModShift == 0 {
|
||||
t.selectionStart = t.cursor
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue