aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-08 20:26:04 +0200
committeruser <user@clank>2026-08-08 20:26:04 +0200
commitccc77067e2ef230f3bc84155644b09476728b4ae (patch)
tree4c0c664d4cbb187f2cfea3f6b08ba70daef59570 /zellij-utils/src/plugin_api
parentsl0p: hot-reload title alignment, gap and padding on config change (diff)
downloadsl0ppij-ccc77067e2ef230f3bc84155644b09476728b4ae.tar.gz
sl0ppij-ccc77067e2ef230f3bc84155644b09476728b4ae.tar.xz
sl0ppij-ccc77067e2ef230f3bc84155644b09476728b4ae.zip
sl0p: fix ghosting/artifacts when resizing panes with a gap
With a gap configured, PaneFrame::render() emits CharacterChunks only for the INSET frame. The gap ring - the cells between a pane's allocated geometry and the smaller frame drawn inside it - was written by nobody. On a fresh paint that looks correct, but only because the screen had just been cleared. As soon as panes are moved or resized, whatever was previously drawn in those cells survives, which is the ghosting/artifacts seen while dragging pane borders. gap_ring_chunks() emits explicit blanks for that ring, restoring the renderer's existing invariant that every cell of a pane's allocation is written by exactly one pane on every render. It is appended at all four frame-render sites (tiled + plugin panes, cached and uncached paths), and is a no-op when gap is 0 so the default path is untouched. Tests assert the ring never overlaps itself, never escapes the allocation, never overdraws the frame, has exactly (outer area - inner area) cells, and that ring + frame together tile the allocation with no holes - a hole being exactly what produces the artifacts.
Diffstat (limited to 'zellij-utils/src/plugin_api')
0 files changed, 0 insertions, 0 deletions