mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-20 01:40:14 -05:00
csi: erase scrollback: cancel selection if it touches the scrollback
This breaks out the scrollback erasing logic for \E[3J from csi.c, and moves it to the new function term_erase_scrollback(), and changes the logic to calculate the start and end row (absolute) numbers of the scrollback, and only iterate those, instead of iterating *all* rows, filtering out those that are on-screen. It also adds an intersection range check of the selection range, and cancels the selection if it touches any of the deleted scrollback rows. This fixes a crash when trying to render the next frame, since the selection now references rows that have been freed. Closes #633
This commit is contained in:
parent
34de799f90
commit
5f0ceb72f1
4 changed files with 66 additions and 23 deletions
|
|
@ -69,10 +69,8 @@ selection_on_rows(const struct terminal *term, int row_start, int row_end)
|
|||
end = tmp;
|
||||
}
|
||||
|
||||
if (row_start >= start->row && row_end <= end->row) {
|
||||
LOG_INFO("ON ROWS");
|
||||
if (row_start >= start->row && row_end <= end->row)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue