term: replace term_put_char() with term_fill()

This commit is contained in:
Daniel Eklöf 2021-12-26 15:59:38 +01:00
parent 1b66c6a3ac
commit 189cfd717f
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 22 additions and 23 deletions

View file

@ -3506,33 +3506,39 @@ print_spacer(struct terminal *term, int col, int remaining)
* - update the cursor
* - linewrap
* - erase sixels
* - erase URIs (but it _does_ emit them if one is active)
*
* Limitations:
* - double width characters not supported
*/
void
term_put_char(struct terminal *term, int r, int c, wchar_t wc)
term_fill(struct terminal *term, int r, int c, char data, size_t count)
{
struct row *row = grid_row(term->grid, r);
row->dirty = true;
struct cell *cell = &row->cells[c];
cell->wc = wc;
cell->attrs = term->vt.attrs;
xassert(c + count <= term->cols);
if (unlikely(term->vt.osc8.uri != NULL)) {
grid_row_uri_range_put(row, c, term->vt.osc8.uri, term->vt.osc8.id);
const struct cell *last = &row->cells[c + count];
for (struct cell *cell = &row->cells[c]; cell < last; cell++) {
cell->wc = data;
cell->attrs = term->vt.attrs;
switch (term->conf->url.osc8_underline) {
case OSC8_UNDERLINE_ALWAYS:
cell->attrs.url = true;
break;
if (unlikely(term->vt.osc8.uri != NULL)) {
grid_row_uri_range_put(row, c, term->vt.osc8.uri, term->vt.osc8.id);
case OSC8_UNDERLINE_URL_MODE:
break;
switch (term->conf->url.osc8_underline) {
case OSC8_UNDERLINE_ALWAYS:
cell->attrs.url = true;
break;
case OSC8_UNDERLINE_URL_MODE:
break;
}
}
}
if (unlikely(row->extra != NULL))
grid_row_uri_range_erase(row, c, c + count - 1);
}
void