|
|
|
@ -4,7 +4,6 @@ import (
|
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
|
|
"github.com/gdamore/tcell/v2"
|
|
|
|
|
"github.com/mattn/go-runewidth"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Button is labeled box that triggers an action when selected.
|
|
|
|
@ -154,12 +153,19 @@ func (b *Button) Draw(screen tcell.Screen) {
|
|
|
|
|
labelColor := b.labelColor
|
|
|
|
|
if b.focus.HasFocus() {
|
|
|
|
|
labelColor = b.labelColorFocused
|
|
|
|
|
// Draw cursor.
|
|
|
|
|
if b.cursorRune != 0 {
|
|
|
|
|
Print(screen, []byte(string(b.cursorRune)), x+width-(width-runewidth.StringWidth(string(b.label)))/2+1, y, width, AlignLeft, labelColor)
|
|
|
|
|
}
|
|
|
|
|
_, pw := Print(screen, b.label, x, y, width, AlignCenter, labelColor)
|
|
|
|
|
|
|
|
|
|
// Draw cursor.
|
|
|
|
|
if b.focus.HasFocus() && b.cursorRune != 0 {
|
|
|
|
|
cursorX := x + int(float64(width)/2+float64(pw)/2)
|
|
|
|
|
if cursorX > x+width-1 {
|
|
|
|
|
cursorX = x + width - 1
|
|
|
|
|
} else if cursorX < x+width {
|
|
|
|
|
cursorX++
|
|
|
|
|
}
|
|
|
|
|
Print(screen, []byte(string(b.cursorRune)), cursorX, y, width, AlignLeft, labelColor)
|
|
|
|
|
}
|
|
|
|
|
Print(screen, b.label, x, y, width, AlignCenter, labelColor)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|