fix(core): stamp spans from unmaximized widths
- commit
- 9f44b240e1e9e7c68a80f15420d6231228a03c82
- author
- brice · · 2026-10-21 05:44 UTC
- committer
- brice · · 2026-10-21 07:11 UTC
- parent
- ff69908
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
2 files · +17 -1
M internal/core/border.go +1 -1
| @@ -134,7 +134,7 @@ func (w *Workspace) setBorder(b border, pos int) { | |||
| 134 | 134 | if !w.validSpans(first, last) { | |
| 135 | 135 | used := 0 | |
| 136 | 136 | for i := first; i <= last; i++ { | |
| 137 | - | w.Columns[i].Span = max((rs[i].W*10000+5000)/avail, 1) | |
| 137 | + | w.Columns[i].Span = max((w.columnWidthFor(i, true)*10000+5000)/avail, 1) | |
| 138 | 138 | w.Columns[i].spanLane = last - first + 1 | |
| 139 | 139 | used += w.Columns[i].Span | |
| 140 | 140 | } | |
| @@ -134,7 +134,7 @@ func (w *Workspace) setBorder(b border, pos int) { | |||||
| 134 | if !w.validSpans(first, last) { | 134 | if !w.validSpans(first, last) { | ||
| 135 | used := 0 | 135 | used := 0 | ||
| 136 | for i := first; i <= last; i++ { | 136 | for i := first; i <= last; i++ { | ||
| 137 | - | w.Columns[i].Span = max((rs[i].W*10000+5000)/avail, 1) | 137 | + | w.Columns[i].Span = max((w.columnWidthFor(i, true)*10000+5000)/avail, 1) |
| 138 | w.Columns[i].spanLane = last - first + 1 | 138 | w.Columns[i].spanLane = last - first + 1 | ||
| 139 | used += w.Columns[i].Span | 139 | used += w.Columns[i].Span | ||
| 140 | } | 140 | } | ||
M internal/core/border_test.go +16 -0
| @@ -212,3 +212,19 @@ func TestBorderPixelRemainders(t *testing.T) { | |||
| 212 | 212 | } | |
| 213 | 213 | } | |
| 214 | 214 | } | |
| 215 | + | ||
| 216 | + | func TestBorderStampIgnoresMaximizedWidth(t *testing.T) { | |
| 217 | + | for _, mode := range []Overflow{OverflowScroll, OverflowFixed, OverflowCascade} { | |
| 218 | + | t.Run(string(mode), func(t *testing.T) { | |
| 219 | + | w := spanWorkspace(mode, 3) | |
| 220 | + | normal := w.columnWidthFor(2, true) | |
| 221 | + | w.Columns[2].FullWidth = true | |
| 222 | + | rs := w.columnRects() | |
| 223 | + | w.setBorder(border{kind: borderColumn, col: 0}, rs[0].X+rs[0].W+15) | |
| 224 | + | w.Columns[2].FullWidth = false | |
| 225 | + | if got := w.columnWidth(2); got != normal { | |
| 226 | + | t.Fatalf("unmaximized width = %d, want %d", got, normal) | |
| 227 | + | } | |
| 228 | + | }) | |
| 229 | + | } | |
| 230 | + | } | |
| @@ -212,3 +212,19 @@ func TestBorderPixelRemainders(t *testing.T) { | |||||
| 212 | } | 212 | } | ||
| 213 | } | 213 | } | ||
| 214 | } | 214 | } | ||
| 215 | + | ||||
| 216 | + | func TestBorderStampIgnoresMaximizedWidth(t *testing.T) { | |||
| 217 | + | for _, mode := range []Overflow{OverflowScroll, OverflowFixed, OverflowCascade} { | |||
| 218 | + | t.Run(string(mode), func(t *testing.T) { | |||
| 219 | + | w := spanWorkspace(mode, 3) | |||
| 220 | + | normal := w.columnWidthFor(2, true) | |||
| 221 | + | w.Columns[2].FullWidth = true | |||
| 222 | + | rs := w.columnRects() | |||
| 223 | + | w.setBorder(border{kind: borderColumn, col: 0}, rs[0].X+rs[0].W+15) | |||
| 224 | + | w.Columns[2].FullWidth = false | |||
| 225 | + | if got := w.columnWidth(2); got != normal { | |||
| 226 | + | t.Fatalf("unmaximized width = %d, want %d", got, normal) | |||
| 227 | + | } | |||
| 228 | + | }) | |||
| 229 | + | } | |||
| 230 | + | } | |||