commit 33f6a5b
Hubert Hirtz
·
2020-06-13 10:39:52 +0000 UTC
parent e213eeb
Don't scroll past buffer content
1 files changed,
+16,
-2
M
ui/ui.go
M
ui/ui.go
+16,
-2
1@@ -12,8 +12,9 @@ type UI struct {
2 Events chan tcell.Event
3 exit atomic.Value // bool
4
5- bufferList BufferList
6- scrollAmt int
7+ bufferList BufferList
8+ scrollAmt int
9+ scrollAtTop bool
10
11 textInput []rune
12 textCursor int
13@@ -83,6 +84,7 @@ func (ui *UI) NextBuffer() {
14 ok := ui.bufferList.Next()
15 if ok {
16 ui.scrollAmt = 0
17+ ui.scrollAtTop = false
18 ui.drawBuffer()
19 ui.drawStatus()
20 }
21@@ -92,12 +94,17 @@ func (ui *UI) PreviousBuffer() {
22 ok := ui.bufferList.Previous()
23 if ok {
24 ui.scrollAmt = 0
25+ ui.scrollAtTop = false
26 ui.drawBuffer()
27 ui.drawStatus()
28 }
29 }
30
31 func (ui *UI) ScrollUp() {
32+ if ui.scrollAtTop {
33+ return
34+ }
35+
36 w, _ := ui.screen.Size()
37 ui.scrollAmt += w / 2
38 ui.drawBuffer()
39@@ -113,6 +120,7 @@ func (ui *UI) ScrollDown() {
40 if ui.scrollAmt < 0 {
41 ui.scrollAmt = 0
42 }
43+ ui.scrollAtTop = false
44
45 ui.drawBuffer()
46 }
47@@ -264,6 +272,7 @@ func (ui *UI) drawBuffer() {
48 b := ui.bufferList.List[ui.bufferList.Current]
49
50 if len(b.Content) == 0 {
51+ ui.scrollAtTop = true
52 return
53 }
54
55@@ -363,6 +372,10 @@ func (ui *UI) drawBuffer() {
56
57 ui.screen.SetContent(x, y, ',', nil, st)
58 x++
59+ if w <= x {
60+ y++
61+ x = 0
62+ }
63 } else if colorState == 5 {
64 colorState = 0
65 st = st.Foreground(colorFromCode(fgColor))
66@@ -417,6 +430,7 @@ func (ui *UI) drawBuffer() {
67 colorState = 0
68 }
69
70+ ui.scrollAtTop = true
71 ui.screen.Show()
72 }
73