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
+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