Fix pane border overflow

This commit is contained in:
Philip Henning 2025-08-13 16:16:53 +02:00
parent a24041d664
commit 0bcb821c33
2 changed files with 44 additions and 6 deletions

View file

@ -18,15 +18,35 @@ func (m Model) View() string {
listView := m.list.View()
detailView := m.detail.View()
left := listStyle.Width(m.width / 2).Height(m.height).Render(listView)
right := detailStyle.Width(m.width - m.width/2).Height(m.height).Render(detailView)
// compute dimensions for each pane accounting for padding and focus border
leftWidth := m.width / 2
rightWidth := m.width - leftWidth
leftHeight := m.height
rightHeight := m.height
if m.focus == listPane {
leftWidth -= 2 // border
leftHeight -= 2
} else {
rightWidth -= 2
rightHeight -= 2
}
// account for horizontal padding
leftWidth -= 2
rightWidth -= 2
left := listStyle.Width(leftWidth).Height(leftHeight).Render(listView)
right := detailStyle.Width(rightWidth).Height(rightHeight).Render(detailView)
if m.focus == listPane {
left = focusedStyle.Render(left)
} else {
right = focusedStyle.Render(right)
}
panes := lipgloss.JoinHorizontal(lipgloss.Top, left, right)
// join panes and status bar
panes := lipgloss.JoinHorizontal(lipgloss.Top, left, right)
status := fmt.Sprintf("VIEW MODE • %d entries", len(m.hosts.Entries))
bar := statusStyle.Width(m.width).Render(status)
return lipgloss.JoinVertical(lipgloss.Left, panes, bar)