From b2e3cc53717008a81e43bc8a617f585743e2f724 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Fri, 31 Jan 2025 15:18:23 -0500 Subject: [PATCH] chore(textarea): account for margins and padding in cursor offsets --- textarea/textarea.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/textarea/textarea.go b/textarea/textarea.go index 7adb902..39e5fed 100644 --- a/textarea/textarea.go +++ b/textarea/textarea.go @@ -1441,8 +1441,20 @@ func Blink() tea.Msg { func (m Model) Cursor() *tea.Cursor { lineInfo := m.LineInfo() w := lipgloss.Width - xOffset := lineInfo.CharOffset + w(m.promptView(0)) + w(m.lineNumberView(0, false)) - yOffset := m.cursorLineNumber() - m.viewport.YOffset + baseStyle := m.activeStyle().Base + + xOffset := lineInfo.CharOffset + + w(m.promptView(0)) + + w(m.lineNumberView(0, false)) + + baseStyle.GetMarginLeft() + + baseStyle.GetPaddingLeft() + + baseStyle.GetBorderLeftSize() + + yOffset := m.cursorLineNumber() + + m.viewport.YOffset + + baseStyle.GetMarginTop() + + baseStyle.GetPaddingTop() + + baseStyle.GetBorderTopSize() c := tea.NewCursor(xOffset, yOffset) c.Blink = m.Styles.Cursor.Blink