aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/tui/tui.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 58d1b09d55..e80d1cdc59 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -88,6 +88,7 @@ typedef struct {
bool cont_received;
UGrid grid;
kvec_t(Rect) invalid_regions;
+ bool did_resize;
int row, col;
int out_fd;
bool scroll_region_is_full_screen;
@@ -738,6 +739,14 @@ static void clear_region(UI *ui, int top, int bot, int left, int right,
cursor_goto(ui, row, col);
print_cell(ui, cell);
});
+
+ if (data->did_resize && top == 0) {
+ // TODO(bfredl): the first line of the screen doesn't gets properly
+ // cleared after resize by the loop above, so redraw the final state
+ // after the next flush.
+ invalidate(ui, 0, bot, left, right);
+ data->did_resize = false;
+ }
}
// restore cursor
@@ -813,6 +822,7 @@ static void tui_grid_resize(UI *ui, Integer g, Integer width, Integer height)
TUIData *data = ui->data;
UGrid *grid = &data->grid;
ugrid_resize(grid, (int)width, (int)height);
+ data->did_resize = true;
// resize might not always be followed by a clear before flush
// so clip the invalid region