Detail panes: keep a margin between the poster and the text
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
coverGapCols = 2 // empty columns between the poster and the text left of it
|
||||||
|
coverGapRows = 1 // empty rows between the poster and the text below it
|
||||||
minCoverRows = 6 // a smaller poster is not worth showing
|
minCoverRows = 6 // a smaller poster is not worth showing
|
||||||
minCoverCols = 8
|
minCoverCols = 8
|
||||||
minTextRows = 6 // the poster never takes these rows from the text
|
minTextRows = 6 // the poster never takes these rows from the text
|
||||||
@@ -91,7 +93,9 @@ func (d *detailPane) Draw(screen tcell.Screen) {
|
|||||||
|
|
||||||
narrow, rows := w, 0
|
narrow, rows := w, 0
|
||||||
if d.coverW > 0 {
|
if d.coverW > 0 {
|
||||||
narrow, rows = w-d.coverW-1, d.coverH // one column of space left of the poster
|
// The text keeps clear of the poster: columns to its left, and one more
|
||||||
|
// line is wrapped narrow so nothing sits right under it.
|
||||||
|
narrow, rows = w-d.coverW-coverGapCols, d.coverH+coverGapRows
|
||||||
}
|
}
|
||||||
if !d.laidOut.valid || d.laidOut.width != w || d.laidOut.narrow != narrow || d.laidOut.rows != rows {
|
if !d.laidOut.valid || d.laidOut.width != w || d.laidOut.narrow != narrow || d.laidOut.rows != rows {
|
||||||
d.laidOut.width, d.laidOut.narrow, d.laidOut.rows, d.laidOut.valid = w, narrow, rows, true
|
d.laidOut.width, d.laidOut.narrow, d.laidOut.rows, d.laidOut.valid = w, narrow, rows, true
|
||||||
|
|||||||
@@ -84,12 +84,14 @@ func TestDetailPaneFlowsAroundPoster(t *testing.T) {
|
|||||||
if got := rowText(screen, 4, 1, 30); !strings.HasPrefix(got, "plot plot") {
|
if got := rowText(screen, 4, 1, 30); !strings.HasPrefix(got, "plot plot") {
|
||||||
t.Errorf("the plot starts beside the poster, right after the head: %q", got)
|
t.Errorf("the plot starts beside the poster, right after the head: %q", got)
|
||||||
}
|
}
|
||||||
// Beside the poster the text stays left of it (34 columns), below it it uses the full width.
|
// Beside the poster the text stays left of it with a gap of two columns
|
||||||
for y := 1; y <= d.coverH; y++ {
|
// (58-23-2 = 33 columns), and the row right under the poster is kept clear too.
|
||||||
if got := strings.TrimRight(rowText(screen, y, 1, 35), " "); len([]rune(got)) > 34 {
|
for y := 1; y <= d.coverH+coverGapRows; y++ {
|
||||||
t.Errorf("row %d runs into the poster: %q", y, got)
|
if got := strings.TrimRight(rowText(screen, y, 1, 36), " "); len([]rune(got)) > 33 {
|
||||||
|
t.Errorf("row %d runs into the poster's margin: %q", y, got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Further down it uses the full width.
|
||||||
if got := strings.TrimSpace(rowText(screen, d.coverH+3, 1, 59)); len(got) < 50 {
|
if got := strings.TrimSpace(rowText(screen, d.coverH+3, 1, 59)); len(got) < 50 {
|
||||||
t.Errorf("below the poster the text should use the full width: %q", got)
|
t.Errorf("below the poster the text should use the full width: %q", got)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user