diff options
author | Luuk van Baal <luukvbaal@gmail.com> | 2023-05-01 20:08:25 +0200 |
---|---|---|
committer | Luuk van Baal <luukvbaal@gmail.com> | 2023-05-03 14:58:25 +0200 |
commit | 197827321a39168dbaa143c9f7b4f5db668f893c (patch) | |
tree | 59df2204df7c47c19b611417319bd804b3c8bbe4 | |
parent | 066db5e7cdaadfb1d2971bdc4b9200f14737d7b6 (diff) | |
download | rneovim-197827321a39168dbaa143c9f7b4f5db668f893c.tar.gz rneovim-197827321a39168dbaa143c9f7b4f5db668f893c.tar.bz2 rneovim-197827321a39168dbaa143c9f7b4f5db668f893c.zip |
fix(tui): grid_clear properly clears the screen
Problem: When setting a shell size smaller than the containing
terminal window through `:winsize` or `:set lines/columns`
the screen is not properly cleared.
Solution: Clear the tui dimensions rather than the grid dimensions.
-rw-r--r-- | src/nvim/tui/tui.c | 2 | ||||
-rw-r--r-- | test/functional/terminal/api_spec.lua | 8 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 13 |
3 files changed, 18 insertions, 5 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 975ad375a0..0d661d2b58 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -977,7 +977,7 @@ void tui_grid_clear(TUIData *tui, Integer g) UGrid *grid = &tui->grid; ugrid_clear(grid); kv_size(tui->invalid_regions) = 0; - clear_region(tui, 0, grid->height, 0, grid->width, 0); + clear_region(tui, 0, tui->height, 0, tui->width, 0); } void tui_grid_cursor_goto(TUIData *tui, Integer grid, Integer row, Integer col) diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index 724791343d..93641fc576 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -66,10 +66,10 @@ describe('api', function() screen:expect([[ [tui] insert-mode | - [socket 1] this is more t{4: }| - han 25 columns {4: }| - [socket 2] input{1: } {4: }| - {4:~ }| + [socket 1] this is more t | + han 25 columns | + [socket 2] input{1: } | + {4:~ } | {3:-- INSERT --} | {3:-- TERMINAL --} | ]]) diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 069fbad803..5fd3467949 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -2422,6 +2422,19 @@ describe("TUI as a client", function() {3:-- TERMINAL --} | ]]} + -- grid smaller than containing terminal window is cleared properly + feed_data(":call setline(1,['a'->repeat(&columns)]->repeat(&lines))\n") + feed_data("0:set lines=2\n") + screen_server:expect{grid=[[ + {1:a}aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| + {5:[No Name] [+] }| + | + | + | + | + {3:-- TERMINAL --} | + ]]} + feed_data(":q!\n") server_super:close() |