mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
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:
parent
56f6e450b0
commit
4849e8f874
1 changed files with 14 additions and 8 deletions
22
selection.c
22
selection.c
|
|
@ -615,11 +615,13 @@ selection_update(struct terminal *term, int col, int row)
|
|||
|
||||
keep_going = wc == CELL_MULT_COL_SPACER;
|
||||
|
||||
/* Multi-col chars shouldn’t 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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue