Sixel P2=1 transparency and cairo OPERATOR_OVER composite onto the previous emit, so swapping RGBA frames of the same size left stale pixels under the new frame's transparent areas.
Track pixel swaps with w_popup_image_px_dirty and repaint the cells under the image before re-emitting. In a terminal the repaint is wrapped in a DEC 2026 synchronized update so the swap does not flicker; terminals without mode 2026 ignore it. Kitty (placement replace) and GDI (SRCCOPY) are unaffected.
Verified: pty byte-capture shows 2026h → cell repaint → new sixel → 2026l per frame swap; test_popupwin (161) and test_popupwin_textprop pass; the cairo path was verified in gvim (GTK).
https://github.com/vim/vim/pull/20478
(2 files)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!
You are receiving this because you are subscribed to this thread.![]()