diff options
| author | user <user@clank> | 2026-08-08 20:26:04 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-08 20:26:04 +0200 |
| commit | ccc77067e2ef230f3bc84155644b09476728b4ae (patch) | |
| tree | 4c0c664d4cbb187f2cfea3f6b08ba70daef59570 /zellij-utils/src/plugin_api | |
| parent | sl0p: hot-reload title alignment, gap and padding on config change (diff) | |
| download | sl0ppij-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
