mirror of
https://github.com/shokinn/hosts-go.git
synced 2025-08-23 16:43:02 +00:00
Fix pane border overflow
This commit is contained in:
parent
a24041d664
commit
0bcb821c33
2 changed files with 44 additions and 6 deletions
|
@ -42,9 +42,27 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
case tea.WindowSizeMsg:
|
case tea.WindowSizeMsg:
|
||||||
m.width = msg.Width
|
m.width = msg.Width
|
||||||
m.height = msg.Height - 1
|
m.height = msg.Height - 1
|
||||||
m.list.SetSize(msg.Width/2, m.height)
|
|
||||||
m.detail.Width = msg.Width - msg.Width/2
|
leftWidth := msg.Width / 2
|
||||||
m.detail.Height = m.height
|
rightWidth := msg.Width - leftWidth
|
||||||
|
leftHeight := m.height
|
||||||
|
rightHeight := m.height
|
||||||
|
|
||||||
|
if m.focus == listPane {
|
||||||
|
leftWidth -= 2
|
||||||
|
leftHeight -= 2
|
||||||
|
} else {
|
||||||
|
rightWidth -= 2
|
||||||
|
rightHeight -= 2
|
||||||
|
}
|
||||||
|
|
||||||
|
leftWidth -= 2
|
||||||
|
rightWidth -= 2
|
||||||
|
|
||||||
|
m.list.SetSize(leftWidth, leftHeight)
|
||||||
|
m.detail.Width = rightWidth
|
||||||
|
m.detail.Height = rightHeight
|
||||||
|
|
||||||
if m.focus == listPane {
|
if m.focus == listPane {
|
||||||
m.list, cmd = m.list.Update(msg)
|
m.list, cmd = m.list.Update(msg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,15 +18,35 @@ func (m Model) View() string {
|
||||||
listView := m.list.View()
|
listView := m.list.View()
|
||||||
detailView := m.detail.View()
|
detailView := m.detail.View()
|
||||||
|
|
||||||
left := listStyle.Width(m.width / 2).Height(m.height).Render(listView)
|
// compute dimensions for each pane accounting for padding and focus border
|
||||||
right := detailStyle.Width(m.width - m.width/2).Height(m.height).Render(detailView)
|
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 {
|
if m.focus == listPane {
|
||||||
left = focusedStyle.Render(left)
|
left = focusedStyle.Render(left)
|
||||||
} else {
|
} else {
|
||||||
right = focusedStyle.Render(right)
|
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))
|
status := fmt.Sprintf("VIEW MODE • %d entries", len(m.hosts.Entries))
|
||||||
bar := statusStyle.Width(m.width).Render(status)
|
bar := statusStyle.Width(m.width).Render(status)
|
||||||
return lipgloss.JoinVertical(lipgloss.Left, panes, bar)
|
return lipgloss.JoinVertical(lipgloss.Left, panes, bar)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue