selection: update: line-wraps are ok while moving pivot start/end point

This fixes an assertion triggered when selecting the upper left cell
and dragging down.

We would end up trying to decrement the pivot end point, hitting an
assertion that only is valid while skipping spacers.

Remove the assertion, and allow pivot points to be moved across line
wraps, but take care not to move outside the visible screen area.
This commit is contained in:
Daniel Eklöf 2021-01-03 16:06:04 +01:00
parent 56f6e450b0
commit 4849e8f874
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -615,11 +615,13 @@ selection_update(struct terminal *term, int col, int row)
keep_going = wc == CELL_MULT_COL_SPACER;
/* Multi-col chars shouldnt span line-wraps */
assert(pivot_end->col > 0);
if (pivot_end->col == 0)
break;
pivot_end->col--;
if (pivot_end->col == 0) {
if (pivot_end->row - term->grid->view <= 0)
break;
pivot_end->col = term->cols - 1;
pivot_end->row--;
} else
pivot_end->col--;
}
} else {
bool keep_going = true;
@ -630,9 +632,13 @@ selection_update(struct terminal *term, int col, int row)
keep_going = wc == CELL_MULT_COL_SPACER;
if (pivot_start->col >= term->cols - 1)
break;
pivot_start->col++;
if (pivot_start->col >= term->cols - 1) {
if (pivot_start->row - term->grid->view >= term->rows - 1)
break;
pivot_start->col = 0;
pivot_start->row++;
} else
pivot_start->col++;
}
}