mirror of
https://github.com/taigrr/bubbletea.git
synced 2026-04-02 02:59:09 -07:00
Fix a bug where left area on the first line was not always cleared
This commit is contained in:
10
renderer.go
10
renderer.go
@@ -146,6 +146,7 @@ func (r *renderer) flush() {
|
||||
defer r.mtx.Unlock()
|
||||
|
||||
if r.linesRendered > 0 {
|
||||
|
||||
// Clear the lines we painted in the last render.
|
||||
for i := r.linesRendered; i > 0; i-- {
|
||||
|
||||
@@ -160,6 +161,15 @@ func (r *renderer) flush() {
|
||||
}
|
||||
|
||||
if _, exists := r.ignoreLines[0]; !exists {
|
||||
// We need to return to the start of the line here to properly
|
||||
// erase it. Going back the entire width of the terminal will
|
||||
// usually be farther than we need to go, but terminal emulators
|
||||
// will stop the cursor at the start of the line as a rule.
|
||||
//
|
||||
// We use this sequence in particular because it's part of the ANSI
|
||||
// standard (whereas others are proprietary to, say, VT100/VT52).
|
||||
cursorBack(out, r.width)
|
||||
|
||||
clearLine(out)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,3 +38,7 @@ func restoreCursorPosition(w io.Writer) {
|
||||
func changeScrollingRegion(w io.Writer, top, bottom int) {
|
||||
fmt.Fprintf(w, te.CSI+te.ChangeScrollingRegionSeq, top, bottom)
|
||||
}
|
||||
|
||||
func cursorBack(w io.Writer, n int) {
|
||||
fmt.Fprintf(w, te.CSI+te.CursorBackSeq, n)
|
||||
}
|
||||
|
||||
6
tea.go
6
tea.go
@@ -197,14 +197,12 @@ func (p *Program) Start() error {
|
||||
}
|
||||
}
|
||||
|
||||
// AltScreen exits the altscreen. This is just a wrapper around the termenv
|
||||
// function.
|
||||
// AltScreen enters the alternate screen buffer.
|
||||
func AltScreen() {
|
||||
termenv.AltScreen()
|
||||
}
|
||||
|
||||
// ExitAltScreen exits the altscreen. This is just a wrapper around the termenv
|
||||
// function.
|
||||
// ExitAltScreen exits the alternate screen buffer.
|
||||
func ExitAltScreen() {
|
||||
termenv.ExitAltScreen()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user