term: cursor-left: reduce move count by one when lcf=true

When lcf is true, cursor is actually beyond the right margin, but the
stored coordinate is at the margin.

This means we need to reduce the number of cells to move the cursor by
one.

This fixes an issue where e.g. backspacing when the cursor is at the
right margin erased the next-to-last character instead of the last
character.
This commit is contained in:
Daniel Eklöf 2020-10-01 20:08:29 +02:00
parent 1110108c84
commit 02e3e4ac9b
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 7 additions and 0 deletions

View file

@ -43,6 +43,8 @@
that it is (much) slower compared to previous foot versions. Use the
**scrollback.multiplier** option in `foot.ini` if you find the new
speed too slow (https://codeberg.org/dnkl/foot/issues/144).
* Cursor left movements moving cursor to wrong location when cursor is
“beyond” the right margin.
### Security

View file

@ -1728,6 +1728,11 @@ term_cursor_home(struct terminal *term)
void
term_cursor_left(struct terminal *term, int count)
{
if (unlikely(term->grid->cursor.lcf))
count--;
assert(count >= 0);
int move_amount = min(term->grid->cursor.point.col, count);
term->grid->cursor.point.col -= move_amount;
assert(term->grid->cursor.point.col >= 0);