From 3ad2ee768181bbcb01d9e42ed7dca14b551e9020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 10 Feb 2020 22:36:39 +0100 Subject: [PATCH] render: resize: fix cursor positioning at grid wrap around When current view is at a grid wrap around (last emitted row index is < grid offset), the cursor row ended up being negative which we then mapped to the top line. This is wrong. When we're at a wrap around, re-adjust cursor by adding the grid's row count. --- render.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/render.c b/render.c index 864881a3..9149dc2c 100644 --- a/render.c +++ b/render.c @@ -1221,8 +1221,12 @@ maybe_resize(struct terminal *term, int width, int height, bool force) /* Position cursor at the last copied row */ /* TODO: can we do better? */ int cursor_row = term->grid == &term->normal - ? last_normal_row - term->normal.offset - 1 - : last_alt_row - term->alt.offset - 1; + ? last_normal_row - term->normal.offset + : last_alt_row - term->alt.offset; + + while (cursor_row < 0) + cursor_row += term->grid->num_rows; + cursor_row--; term_cursor_to( term,