grid: invert the default value of ‘linebreak’, from false to true

This commit is contained in:
Daniel Eklöf 2022-06-01 19:28:47 +02:00
parent 377997be9d
commit cdd46cdf85
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 12 additions and 6 deletions

14
grid.c
View file

@ -284,7 +284,7 @@ grid_row_alloc(int cols, bool initialize)
{ {
struct row *row = xmalloc(sizeof(*row)); struct row *row = xmalloc(sizeof(*row));
row->dirty = false; row->dirty = false;
row->linebreak = false; row->linebreak = true;
row->extra = NULL; row->extra = NULL;
if (initialize) { if (initialize) {
@ -502,7 +502,7 @@ _line_wrap(struct grid *old_grid, struct row **new_grid, struct row *row,
} else { } else {
/* Scrollback is full, need to re-use a row */ /* Scrollback is full, need to re-use a row */
grid_row_reset_extra(new_row); grid_row_reset_extra(new_row);
new_row->linebreak = false; new_row->linebreak = true;
tll_foreach(old_grid->sixel_images, it) { tll_foreach(old_grid->sixel_images, it) {
if (it->item.pos.row == *row_idx) { if (it->item.pos.row == *row_idx) {
@ -833,6 +833,14 @@ grid_resize_and_reflow(
&new_row->cells[new_col_idx], &old_row->cells[from], &new_row->cells[new_col_idx], &old_row->cells[from],
amount * sizeof(struct cell)); amount * sizeof(struct cell));
/*
* Weve printed to this line - reset linebreak.
*
* If the old line ends with a hard linebreak, well
* set linebreak=true on the last new row we print to.
*/
new_row->linebreak = false;
count -= amount; count -= amount;
from += amount; from += amount;
new_col_idx += amount; new_col_idx += amount;
@ -891,7 +899,7 @@ grid_resize_and_reflow(
} }
if (old_row->linebreak) { if (old_row->linebreak && col_count > 0) {
/* Erase the remaining cells */ /* Erase the remaining cells */
memset(&new_row->cells[new_col_idx], 0, memset(&new_row->cells[new_col_idx], 0,
(new_cols - new_col_idx) * sizeof(new_row->cells[0])); (new_cols - new_col_idx) * sizeof(new_row->cells[0]));

View file

@ -1811,7 +1811,7 @@ static inline void
erase_line(struct terminal *term, struct row *row) erase_line(struct terminal *term, struct row *row)
{ {
erase_cell_range(term, row, 0, term->cols - 1); erase_cell_range(term, row, 0, term->cols - 1);
row->linebreak = false; row->linebreak = true;
} }
void void
@ -3297,7 +3297,6 @@ term_print(struct terminal *term, char32_t wc, int width)
/* *Must* get current cell *after* linewrap+insert */ /* *Must* get current cell *after* linewrap+insert */
struct row *row = grid->cur_row; struct row *row = grid->cur_row;
row->dirty = true; row->dirty = true;
row->linebreak = true;
struct cell *cell = &row->cells[col]; struct cell *cell = &row->cells[col];
cell->wc = term->vt.last_printed = wc; cell->wc = term->vt.last_printed = wc;
@ -3357,7 +3356,6 @@ ascii_printer_fast(struct terminal *term, char32_t wc)
struct row *row = grid->cur_row; struct row *row = grid->cur_row;
row->dirty = true; row->dirty = true;
row->linebreak = true;
struct cell *cell = &row->cells[col]; struct cell *cell = &row->cells[col];
cell->wc = term->vt.last_printed = wc; cell->wc = term->vt.last_printed = wc;