From fb9a95494dd0d6f55ec9ef08115b3b1ad1403305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 3 Jan 2021 15:37:51 +0100 Subject: [PATCH] =?UTF-8?q?selection:=20update:=20simplify:=20multi-column?= =?UTF-8?q?=20chars=20don=E2=80=99t=20span=20line-wraps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- selection.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/selection.c b/selection.c index 78add510..81baf677 100644 --- a/selection.c +++ b/selection.c @@ -620,13 +620,11 @@ selection_update(struct terminal *term, int col, int row) keep_going = wc == CELL_MULT_COL_SPACER; - if (pivot_end->col == 0) { - if (pivot_end->row > 0) { - pivot_end->col = term->cols - 1; - pivot_end->row--; - } - } else - pivot_end->col--; + /* Multi-col chars shouldn’t span line-wraps */ + assert(pivot_end->col > 0); + if (pivot_end->col == 0) + break; + pivot_end->col--; } } else { bool keep_going = true; @@ -637,13 +635,9 @@ selection_update(struct terminal *term, int col, int row) keep_going = wc == CELL_MULT_COL_SPACER; - if (pivot_start->col >= term->cols - 1) { - if (pivot_start->row < term->rows - 1) { - pivot_start->col = 0; - pivot_start->row++; - } - } else - pivot_start->col++; + if (pivot_start->col >= term->cols - 1) + break; + pivot_start->col++; } }