diff --git a/viewport/viewport.go b/viewport/viewport.go index a2f708e9..fae3ff5a 100644 --- a/viewport/viewport.go +++ b/viewport/viewport.go @@ -349,12 +349,16 @@ func (m Model) View() string { // position anything below this view properly. return strings.Repeat("\n", max(0, m.Height-1)) } - contentWidth := m.Width - m.Style.GetHorizontalFrameSize() - contentHeight := m.Height - m.Style.GetVerticalFrameSize() - return m.Style.Copy(). - UnsetWidth().MaxWidth(contentWidth). // truncate long lines. - Height(contentHeight).MaxHeight(contentHeight). // pad to height then truncate. + contentWidth := min(m.Width, m.Style.GetWidth()) - m.Style.GetHorizontalFrameSize() + contentHeight := min(m.Height, m.Style.GetHeight()) - m.Style.GetVerticalFrameSize() + contents := lipgloss.NewStyle(). + Height(contentHeight). // pad to height. + MaxHeight(contentHeight). // truncate height if taller. + MaxWidth(contentWidth). // truncate width. Render(strings.Join(m.visibleLines(), "\n")) + return m.Style.Copy(). + UnsetWidth().UnsetHeight(). // Style size already applied in contents. + Render(contents) } func clamp(v, low, high int) int {