diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2018-07-26 19:55:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-26 19:55:26 +0200 |
commit | 5f15788dc3ac1ea7906673eacc9cf9bdb1f14212 (patch) | |
tree | c08513af812e27310da3657435f8960ae3cff037 | |
parent | 9c0c5e8bc60a389988b339372ef804325daf9b3f (diff) | |
download | rneovim-5f15788dc3ac1ea7906673eacc9cf9bdb1f14212.tar.gz rneovim-5f15788dc3ac1ea7906673eacc9cf9bdb1f14212.tar.bz2 rneovim-5f15788dc3ac1ea7906673eacc9cf9bdb1f14212.zip |
tui: clip invalid regions on resize (#8779), fixes #8774
-rw-r--r-- | src/nvim/tui/tui.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index cfcfaa83a0..508d25cd3b 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -802,7 +802,16 @@ static void reset_scroll_region(UI *ui) static void tui_grid_resize(UI *ui, Integer g, Integer width, Integer height) { TUIData *data = ui->data; - ugrid_resize(&data->grid, (int)width, (int)height); + UGrid *grid = &data->grid; + ugrid_resize(grid, (int)width, (int)height); + + // resize might not always be followed by a clear before flush + // so clip the invalid region + for (size_t i = 0; i < kv_size(data->invalid_regions); i++) { + Rect *r = &kv_A(data->invalid_regions, i); + r->bot = MIN(r->bot, grid->height-1); + r->right = MIN(r->right, grid->width-1); + } if (!got_winch) { // Try to resize the terminal window. UNIBI_SET_NUM_VAR(data->params[0], (int)height); |