sixel: fix sheared image when image crosses scrollback wrap-around

When a sixel image crosses the scrollback wrap-around, it is split up
into (at least) two pieces.

We use cursor->point.col for all pieces’ x-coordinate. This caused the
final image to appear sheared, since we do a carriage-return (after a
number of linefeeds) after each piece - this causes the cursor’s
position to be reset to the left margin.

The solution is simple; remember the cursor’s initial x-coordinate,
and use that to position all image pieces.

Closes #151.
This commit is contained in:
Daniel Eklöf 2020-10-02 20:56:44 +02:00
parent 7a7ba599c3
commit cdcdfe527c
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 14 additions and 1 deletions

View file

@ -48,6 +48,9 @@
* Background opacity when in _reverse video_ mode.
* Crash when writing a sixel image that extends outside the terminal's
right margin (https://codeberg.org/dnkl/foot/issues/151).
* Sixel image at non-zero column positions getting sheared at
seemingly random occasions
(https://codeberg.org/dnkl/foot/issues/151).
### Security