From 04cd5a2b41efd6f39c3ba15c32e60843e2c6485d Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 6 Jul 2026 13:10:53 -0300 Subject: layout: every pane open/close resizes exactly ONE sibling — never the whole column. Buggy paths fixed: Alt-n inserted a weight-1 shell (whole column reflowed) — now splitBelow the active pane; stackDocLeft (file/image/tutor open with no doc yet) gave the doc a fair share (every pane shrank) — now it halves only the old top pane's slot; ttyForDir (execute from a file pane) appended a weight-1 shell to the rightmost column — now splitBelow its bottom pane; Alt-c moved a pane out without absorbVWeight (all old siblings grew) — now the sibling above absorbs first. Underneath: splitBelow/absorbVWeight/stackDocLeft snap the whole column's weights to on-screen row counts, because computeGeom's per-pane round(avail*w/vsum) let fractional weights jiggle bystanders by a row; evictLonePristineTty recomputes geometry first (a just-stacked doc has no rect). New snap tests layout-open + layout-close cover Alt-n, doc stacking, ttyForDir, Alt-c, tag Del, pty EOF, and column-width handoff. Six goldens regenerated (fileedit, images, look-file, syntax, tutor, windowops): they had frozen the fair-share/append reflow this change removes; every diff is only the doc/split pane sizing, with untouched panes' boundaries restored bit-identical (e.g. bottom pane tag back at its boot row 17 instead of pushed to 22). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/snapshots/layout-open.golden | 155 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 test/snapshots/layout-open.golden (limited to 'test/snapshots/layout-open.golden') diff --git a/test/snapshots/layout-open.golden b/test/snapshots/layout-open.golden new file mode 100644 index 00000000..2da61d61 --- /dev/null +++ b/test/snapshots/layout-open.golden @@ -0,0 +1,155 @@ +== snap before grid=100x30 cursor=4,7 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| +| +| echo one; echo two +| +| +| +| +| +| +| +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| +| +| +| +== snap altn-left grid=100x30 cursor=4,8 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| +| +| +| +== snap altn-right grid=100x30 cursor=54,8 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| +| +| +| +| +| +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| +| +| +| +== snap file-open grid=100x30 cursor=7,2 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/layout-open/cwd/sub/f.txt Sa nm /tmp/pardes-snap/layout-open/cwd Del +| 1 echo 'TTY'OK +| nm /tmp/pardes-snap/layout-open/cwd Del sub +| +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| +| +| +| +| +| +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| sub/f.txt +| +| +| +== snap ttydir grid=100x30 cursor=7,2 +|Kill Newcol Tutor Debug Colors NextColor Dump +| nm /tmp/pardes-snap/layout-open/cwd/sub/f.txt Sa nm /tmp/pardes-snap/layout-open/cwd Del +| 1 echo 'TTY'OK +| nm /tmp/pardes-snap/layout-open/cwd Del sub +| +| nm /tmp/pardes-snap/layout-open/cwd Del nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub sub +| +| nm /tmp/pardes-snap/layout-open/cwd/sub Del +| echo 'TTY'OK +| +| TTYOK +| +| +| +| nm /tmp/pardes-snap/layout-open/cwd Del +| +| sub +| +| +| +| +| +| +| +| sub/f.txt +| +| +| -- cgit v1.3