diff --git a/kitty/data-types.h b/kitty/data-types.h index 65d5a60f3..b75dac81b 100644 --- a/kitty/data-types.h +++ b/kitty/data-types.h @@ -253,17 +253,6 @@ typedef struct {FONTS_DATA_HEAD} *FONTS_DATA_HANDLE; #define clear_sprite_position(cell) (cell).sprite_x = 0; (cell).sprite_y = 0; (cell).sprite_z = 0; -#define left_shift_line(line, at, num) { \ - for(index_type __i__ = (at); __i__ < (line)->xnum - (num); __i__++) { \ - COPY_CELL(line, __i__ + (num), line, __i__) \ - } \ - if ((((line)->gpu_cells[(at)].attrs) & WIDTH_MASK) != 1) { \ - (line)->cpu_cells[(at)].ch = BLANK_CHAR; \ - (line)->gpu_cells[(at)].attrs = BLANK_CHAR ? 1 : 0; \ - clear_sprite_position((line)->gpu_cells[(at)]); \ - }\ -} - #define ensure_space_for(base, array, type, num, capacity, initial_cap, zero_mem) \ if ((base)->capacity < num) { \ size_t _newcap = MAX((size_t)initial_cap, MAX(2 * (base)->capacity, (size_t)num)); \ diff --git a/kitty/lineops.h b/kitty/lineops.h index 81fc554dd..48e2179df 100644 --- a/kitty/lineops.h +++ b/kitty/lineops.h @@ -54,6 +54,18 @@ line_reset_cells(Line *line, index_type start, index_type num, GPUCell *gpu_cell memcpy(line->cpu_cells + start, cpu_cells + start, sizeof(CPUCell) * num); } +static inline void +left_shift_line(Line *line, index_type at, index_type num) { + for (index_type i = at; i < line->xnum - num; i++) { + COPY_CELL(line, i + num, line, i); + } + if (at < line->xnum && ((line->gpu_cells[at].attrs) & WIDTH_MASK) != 1) { + line->cpu_cells[at].ch = BLANK_CHAR; + line->gpu_cells[at].attrs = BLANK_CHAR ? 1 : 0; + clear_sprite_position(line->gpu_cells[at]); + } +} + typedef Line*(get_line_func)(void *, int); void line_clear_text(Line *self, unsigned int at, unsigned int num, char_type ch); void line_apply_cursor(Line *self, Cursor *cursor, unsigned int at, unsigned int num, bool clear_char);