diff --git a/cmd/pad/main.go b/cmd/pad/main.go index 45992c7..71786b3 100644 --- a/cmd/pad/main.go +++ b/cmd/pad/main.go @@ -67,11 +67,6 @@ func run(w *app.Window) error { currentElems := elems mu.Unlock() - log.Println("FrameEvent: rendering", len(currentElems), "elements") - for i, elem := range currentElems { - log.Println(" Element", i, "type:", typeOf(elem)) - } - gtx := app.NewContext(&ops, e) renderer.Draw(gtx, currentElems) e.Frame(&ops) @@ -89,20 +84,3 @@ func frameReceiver(w *app.Window, mu *sync.Mutex, elems *[]ui.Element, frameChan mu.Unlock() } } - -func typeOf(v any) string { - switch v.(type) { - case ui.Label: - return "Label" - case ui.ListView: - return "ListView" - case ui.StatusBar: - return "StatusBar" - case ui.BottomBar: - return "BottomBar" - case ui.Button: - return "Button" - default: - return "Unknown" - } -} diff --git a/internal/ui/render.go b/internal/ui/render.go index 993ee3a..eedbe4b 100644 --- a/internal/ui/render.go +++ b/internal/ui/render.go @@ -4,6 +4,7 @@ import ( "image" "gioui.org/layout" + "gioui.org/op" "gioui.org/op/clip" "gioui.org/text" "gioui.org/unit" @@ -145,22 +146,25 @@ func (r *Renderer) drawBottomBar(gtx layout.Context, bb BottomBar) { }.Push(gtx.Ops) // Left: Cursor position - cursorX := reg.X + unit.Dp(8) - gtx.Constraints.Min.X = int(cursorX) - gtx.Constraints.Min.Y = int(reg.Y) - material.Label(th, r.theme.FontSize, bb.CursorPos).Layout(gtx) + { + cursorX := reg.X + unit.Dp(8) + op.Offset(image.Point{X: int(cursorX), Y: int(reg.Y)}).Push(gtx.Ops).Pop() + material.Label(th, r.theme.FontSize, bb.CursorPos).Layout(gtx) + } // Center: Byte position - byteX := reg.X + reg.W/2 - unit.Dp(60) // approximate center - gtx.Constraints.Min.X = int(byteX) - gtx.Constraints.Min.Y = int(reg.Y) - material.Label(th, r.theme.FontSize, bb.BytePos).Layout(gtx) + { + byteX := reg.X + reg.W/2 - unit.Dp(60) // approximate center + op.Offset(image.Point{X: int(byteX), Y: int(reg.Y)}).Push(gtx.Ops).Pop() + material.Label(th, r.theme.FontSize, bb.BytePos).Layout(gtx) + } // Right: Word wrap button - wordWrapX := reg.X + reg.W - unit.Dp(120) - gtx.Constraints.Min.X = int(wordWrapX) - gtx.Constraints.Min.Y = int(reg.Y) - material.Label(th, r.theme.FontSize, "[Word Wrap: "+boolToString(bb.WordWrap)+"]").Layout(gtx) + { + wordWrapX := reg.X + reg.W - unit.Dp(120) + op.Offset(image.Point{X: int(wordWrapX), Y: int(reg.Y)}).Push(gtx.Ops).Pop() + material.Label(th, r.theme.FontSize, "[Word Wrap: "+boolToString(bb.WordWrap)+"]").Layout(gtx) + } c.Pop() } diff --git a/pad b/pad index bfeaee2..571ce4d 100755 Binary files a/pad and b/pad differ