diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2018-07-24 17:45:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-24 17:45:42 +0200 |
commit | 72ddbb675fc9cd649feeddef754b65c08bbf21ba (patch) | |
tree | e457b3a7c09dc3af61aee29dcf0289c1b7ce90c8 /src | |
parent | c8e7a447c5694e7e2a58f2b112530d896efa30ba (diff) | |
parent | dcac926ced82c64ab6041a52e97331f1af1930d9 (diff) | |
download | rneovim-72ddbb675fc9cd649feeddef754b65c08bbf21ba.tar.gz rneovim-72ddbb675fc9cd649feeddef754b65c08bbf21ba.tar.bz2 rneovim-72ddbb675fc9cd649feeddef754b65c08bbf21ba.zip |
Merge pull request #8771 from bfredl/glitches
Fix redraw glitches with newgrid refactor
Fixes #8768 #8775
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/ui.c | 9 | ||||
-rw-r--r-- | src/nvim/screen.c | 8 | ||||
-rw-r--r-- | src/nvim/tui/tui.c | 2 | ||||
-rw-r--r-- | src/nvim/ugrid.c | 2 |
4 files changed, 15 insertions, 6 deletions
diff --git a/src/nvim/api/ui.c b/src/nvim/api/ui.c index 63c2c4a1b9..d0db43c588 100644 --- a/src/nvim/api/ui.c +++ b/src/nvim/api/ui.c @@ -302,6 +302,15 @@ static void remote_ui_grid_scroll(UI *ui, Integer grid, Integer top, args = (Array)ARRAY_DICT_INIT; ADD(args, INTEGER_OBJ(rows)); push_call(ui, "scroll", args); + + // some clients have "clear" being affected by scroll region, + // so reset it. + args = (Array)ARRAY_DICT_INIT; + ADD(args, INTEGER_OBJ(0)); + ADD(args, INTEGER_OBJ(ui->height-1)); + ADD(args, INTEGER_OBJ(0)); + ADD(args, INTEGER_OBJ(ui->width-1)); + push_call(ui, "set_scroll_region", args); } } diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 65a3c17286..e8dbc11710 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -283,8 +283,11 @@ void update_screen(int type) if (msg_scrolled) { clear_cmdline = true; if (dy_flags & DY_MSGSEP) { + int valid = MAX(Rows - msg_scrollsize(), 0); + if (valid == 0) { + redraw_tabline = true; + } FOR_ALL_WINDOWS_IN_TAB(wp, curtab) { - int valid = Rows - msg_scrollsize(); if (wp->w_winrow + wp->w_height > valid) { wp->w_redr_type = NOT_VALID; wp->w_lines_valid = 0; @@ -292,9 +295,6 @@ void update_screen(int type) if (wp->w_winrow + wp->w_height + wp->w_status_height > valid) { wp->w_redr_status = true; } - if (valid == 0) { - redraw_tabline = true; - } } } else if (msg_scrolled > Rows - 5) { // clearing is faster type = CLEAR; diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 56c47ed6cc..cfcfaa83a0 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -823,7 +823,7 @@ static void tui_grid_clear(UI *ui, Integer g) UGrid *grid = &data->grid; ugrid_clear(grid); kv_size(data->invalid_regions) = 0; - clear_region(ui, grid->top, grid->bot, grid->left, grid->right, + clear_region(ui, 0, grid->height-1, 0, grid->width-1, data->clear_attrs); } diff --git a/src/nvim/ugrid.c b/src/nvim/ugrid.c index 48f3cff2d7..36936970f8 100644 --- a/src/nvim/ugrid.c +++ b/src/nvim/ugrid.c @@ -44,7 +44,7 @@ void ugrid_resize(UGrid *grid, int width, int height) void ugrid_clear(UGrid *grid) { - clear_region(grid, grid->top, grid->bot, grid->left, grid->right, + clear_region(grid, 0, grid->height-1, 0, grid->width-1, HLATTRS_INIT); } |