multiple lines scrolling together horizontally
This commit is contained in:
parent
f1602d0fb0
commit
2452633e32
30
renderer.nim
30
renderer.nim
|
@ -37,6 +37,15 @@ proc render*(textBuffer: TextBuffer, termBuffer: Buffer, prompt: string, scroll:
|
||||||
termBuffer.redraw()
|
termBuffer.redraw()
|
||||||
return # nothing will fit anyways
|
return # nothing will fit anyways
|
||||||
|
|
||||||
|
const scrollOffset = 2
|
||||||
|
# right scroll
|
||||||
|
if x - scroll.x >= maxTextLen - scrollOffset:
|
||||||
|
scroll.x = x - maxTextLen + scrollOffset
|
||||||
|
# left scroll
|
||||||
|
if x - scroll.x < 0:
|
||||||
|
scroll.x = x
|
||||||
|
# left scroll on backspace - TODO IMPLEMENT
|
||||||
|
|
||||||
for i in 0..lines.high():
|
for i in 0..lines.high():
|
||||||
let line = lines[i]
|
let line = lines[i]
|
||||||
if i == 0:
|
if i == 0:
|
||||||
|
@ -44,23 +53,10 @@ proc render*(textBuffer: TextBuffer, termBuffer: Buffer, prompt: string, scroll:
|
||||||
else:
|
else:
|
||||||
termBuffer.write(" ".repeat(promptLen))
|
termBuffer.write(" ".repeat(promptLen))
|
||||||
|
|
||||||
let lineLen = line.len()
|
# keep what's in range
|
||||||
if lineLen < maxTextLen - 1:
|
let fromPos = scroll.x
|
||||||
scroll.x = 0
|
let toPos = min(scroll.x+maxTextLen-2, line.high())
|
||||||
termBuffer.write(line)
|
if fromPos <= line.high():
|
||||||
else:
|
|
||||||
const scrollOffset = 2
|
|
||||||
# horizontal scroll
|
|
||||||
# right scroll
|
|
||||||
if x - scroll.x >= maxTextLen - scrollOffset:
|
|
||||||
scroll.x = x - maxTextLen + scrollOffset
|
|
||||||
# left scroll
|
|
||||||
if x - scroll.x < 0:
|
|
||||||
scroll.x = x
|
|
||||||
# left scroll
|
|
||||||
# keep what's in range
|
|
||||||
let fromPos = scroll.x
|
|
||||||
let toPos = min(scroll.x+maxTextLen-2, line.high())
|
|
||||||
termBuffer.write(line[fromPos..toPos])
|
termBuffer.write(line[fromPos..toPos])
|
||||||
termBuffer.newLine()
|
termBuffer.newLine()
|
||||||
termBuffer.setCursorPos(x + promptLen - scroll.x, y - scroll.y)
|
termBuffer.setCursorPos(x + promptLen - scroll.x, y - scroll.y)
|
||||||
|
|
Loading…
Reference in New Issue