Fix BottomBar element positioning in renderer

- drawBottomBar now uses element region to position text
- Clips to bottom bar region before drawing
- Positions cursor position, byte position, word wrap button correctly

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Greg Pomerantz 2026-05-08 17:12:21 -04:00
parent 013416ee08
commit c452cbef6d
2 changed files with 15 additions and 0 deletions

View File

@ -133,17 +133,32 @@ func (r *Renderer) drawStatusBar(gtx layout.Context, sb StatusBar) {
} }
func (r *Renderer) drawBottomBar(gtx layout.Context, bb BottomBar) { func (r *Renderer) drawBottomBar(gtx layout.Context, bb BottomBar) {
reg := bb.Region()
th := material.NewTheme() th := material.NewTheme()
th.Shaper = r.shp th.Shaper = r.shp
// Clip to bottom bar region
c := clip.Rect{
Min: image.Point{X: int(reg.X), Y: int(reg.Y)},
Max: image.Point{X: int(reg.X + reg.W), Y: int(reg.Y + reg.H)},
}.Push(gtx.Ops)
// Left: Cursor position // Left: Cursor position
cursorX := reg.X + unit.Dp(8)
gtx.Constraints.Min.X = int(cursorX)
material.Label(th, r.theme.FontSize, bb.CursorPos).Layout(gtx) material.Label(th, r.theme.FontSize, bb.CursorPos).Layout(gtx)
// Center: Byte position // Center: Byte position
byteX := reg.X + reg.W/2 - unit.Dp(60) // approximate center
gtx.Constraints.Min.X = int(byteX)
material.Label(th, r.theme.FontSize, bb.BytePos).Layout(gtx) material.Label(th, r.theme.FontSize, bb.BytePos).Layout(gtx)
// Right: Word wrap button // Right: Word wrap button
wordWrapX := reg.X + reg.W - unit.Dp(120)
gtx.Constraints.Min.X = int(wordWrapX)
material.Label(th, r.theme.FontSize, "[Word Wrap: "+boolToString(bb.WordWrap)+"]").Layout(gtx) material.Label(th, r.theme.FontSize, "[Word Wrap: "+boolToString(bb.WordWrap)+"]").Layout(gtx)
c.Pop()
} }
func (r *Renderer) drawButton(gtx layout.Context, btn Button) { func (r *Renderer) drawButton(gtx layout.Context, btn Button) {

BIN
pad

Binary file not shown.