diff options
author | Hubert Hirtz <hubert@hirtzfr.eu> | 2020-06-13 12:39:52 +0200 |
---|---|---|
committer | Hubert Hirtz <hubert@hirtzfr.eu> | 2020-06-13 12:39:52 +0200 |
commit | 33f6a5bf9ae04c3b0ff5f627d2f2fe0b8ebd399d (patch) | |
tree | b0342ac1f26807bf1bd859f38aca0cff86f1fa2a /ui/ui.go | |
parent | Add test for 0-width chars (diff) |
Don't scroll past buffer content
Diffstat (limited to 'ui/ui.go')
-rw-r--r-- | ui/ui.go | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -12,8 +12,9 @@ type UI struct { Events chan tcell.Event exit atomic.Value // bool - bufferList BufferList - scrollAmt int + bufferList BufferList + scrollAmt int + scrollAtTop bool textInput []rune textCursor int @@ -83,6 +84,7 @@ func (ui *UI) NextBuffer() { ok := ui.bufferList.Next() if ok { ui.scrollAmt = 0 + ui.scrollAtTop = false ui.drawBuffer() ui.drawStatus() } @@ -92,12 +94,17 @@ func (ui *UI) PreviousBuffer() { ok := ui.bufferList.Previous() if ok { ui.scrollAmt = 0 + ui.scrollAtTop = false ui.drawBuffer() ui.drawStatus() } } func (ui *UI) ScrollUp() { + if ui.scrollAtTop { + return + } + w, _ := ui.screen.Size() ui.scrollAmt += w / 2 ui.drawBuffer() @@ -113,6 +120,7 @@ func (ui *UI) ScrollDown() { if ui.scrollAmt < 0 { ui.scrollAmt = 0 } + ui.scrollAtTop = false ui.drawBuffer() } @@ -264,6 +272,7 @@ func (ui *UI) drawBuffer() { b := ui.bufferList.List[ui.bufferList.Current] if len(b.Content) == 0 { + ui.scrollAtTop = true return } @@ -363,6 +372,10 @@ func (ui *UI) drawBuffer() { ui.screen.SetContent(x, y, ',', nil, st) x++ + if w <= x { + y++ + x = 0 + } } else if colorState == 5 { colorState = 0 st = st.Foreground(colorFromCode(fgColor)) @@ -417,6 +430,7 @@ func (ui *UI) drawBuffer() { colorState = 0 } + ui.scrollAtTop = true ui.screen.Show() } |