diff options
Diffstat (limited to 'src/nvim/ui.c')
| -rw-r--r-- | src/nvim/ui.c | 20 | 
1 files changed, 14 insertions, 6 deletions
diff --git a/src/nvim/ui.c b/src/nvim/ui.c index 7dbb8ec790..fc4a3a403d 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -341,15 +341,15 @@ void ui_line(ScreenGrid *grid, int row, int startcol, int endcol, int clearcol,                     flags, (const schar_T *)grid->chars + off,                     (const sattr_T *)grid->attrs + off); -  if (p_wd) {  // 'writedelay': flush & delay each time. -    int old_row = cursor_row, old_col = cursor_col; -    handle_T old_grid = cursor_grid_handle; +  // 'writedelay': flush & delay each time. +  if (p_wd && !(rdb_flags & RDB_COMPOSITOR)) {      // If 'writedelay' is active, set the cursor to indicate what was drawn. -    ui_grid_cursor_goto(grid->handle, row, MIN(clearcol, (int)Columns-1)); -    ui_flush(); +    ui_call_grid_cursor_goto(grid->handle, row, +                             MIN(clearcol, (int)grid->Columns-1)); +    ui_call_flush();      uint64_t wd = (uint64_t)labs(p_wd);      os_microdelay(wd * 1000u, true); -    ui_grid_cursor_goto(old_grid, old_row, old_col); +    pending_cursor_update = true;  // restore the cursor later    }  } @@ -372,6 +372,14 @@ void ui_grid_cursor_goto(handle_T grid_handle, int new_row, int new_col)    pending_cursor_update = true;  } +/// moving the cursor grid will implicitly move the cursor +void ui_check_cursor_grid(handle_T grid_handle) +{ +  if (cursor_grid_handle == grid_handle) { +    pending_cursor_update = true; +  } +} +  void ui_mode_info_set(void)  {    pending_mode_info_update = true;  | 
