sixel: place cursor on the last character row touched by the sixel

After emitting a sixel, place the cursor on the character row touched
by the last sixel. The last sixel _may_ not be a multiple of 6
pixels, *if* the sixel had an explicit width/height set via raster
attributes.

This is an intended deviation from the DEC cursor placement algorithm,
where the cursor is placed on the character row touched by the last
sixel's *upper* pixel.

The adjusted algorithm implemented here makes it much easier for
applications to handle text-after-sixels, since they can now simply
assume a single text newline is required to move the cursor to a
character row not touched by the sixel.
This commit is contained in:
Daniel Eklöf 2024-03-04 16:18:49 +01:00
parent 5f41eb798b
commit 282c55aa4a
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 8 additions and 12 deletions

View file

@ -109,6 +109,9 @@
determining whether a key combination produces text or not.
* CSI-t queries now report pixel values **unscaled**, instead of
**scaled** ([#1643][1643]).
* Sixel: text cursor is now placed on the last text row touched by the
sixel, instead of the text row touched by the _upper_ pixel of the
last sixel ([#chafa-192][chafa-192]).
[1526]: https://codeberg.org/dnkl/foot/issues/1526
[1528]: https://codeberg.org/dnkl/foot/issues/1528
@ -116,6 +119,7 @@
[kitty-6913]: https://github.com/kovidgoyal/kitty/issues/6913
[1584]: https://codeberg.org/dnkl/foot/issues/1584
[1643]: https://codeberg.org/dnkl/foot/issues/1643
[chafa-192]: https://github.com/hpjansson/chafa/issues/192
### Deprecated