fix(window): making float with title/footer non-float leaks memory (#30551)

(cherry picked from commit 4f9311b759)
This commit is contained in:
zeertzjq
2024-09-28 10:21:06 +08:00
committed by github-actions[bot]
parent 2f3c447605
commit 28fba3bf27
5 changed files with 60 additions and 27 deletions

View File

@@ -1815,10 +1815,10 @@ describe('API/win', function()
'title/footer must be string or array',
pcall_err(api.nvim_open_win, 0, false, {
relative = 'editor',
row = 5,
col = 5,
height = 5,
width = 5,
row = 10,
col = 10,
height = 10,
width = 10,
border = 'single',
title = { { 'TITLE' } },
footer = 0,
@@ -1831,10 +1831,10 @@ describe('API/win', function()
'title/footer must be string or array',
pcall_err(api.nvim_open_win, 0, false, {
relative = 'editor',
row = 5,
col = 5,
height = 5,
width = 5,
row = 10,
col = 10,
height = 10,
width = 10,
border = 'single',
title = 0,
footer = { { 'FOOTER' } },
@@ -2840,10 +2840,10 @@ describe('API/win', function()
before_each(function()
win = api.nvim_open_win(0, false, {
relative = 'editor',
row = 5,
col = 5,
height = 5,
width = 5,
row = 10,
col = 10,
height = 10,
width = 10,
border = 'single',
title = { { 'OLD_TITLE' } },
footer = { { 'OLD_FOOTER' } },

View File

@@ -2515,6 +2515,37 @@ describe('float window', function()
end
eq({{"🦄", ""}, {"BB", {"B0", "B1", ""}}}, api.nvim_win_get_config(win).title)
eq({{"🦄", ""}, {"BB", {"B0", "B1", ""}}}, api.nvim_win_get_config(win).footer)
-- making it a split should not leak memory
api.nvim_win_set_config(win, { vertical = true })
if multigrid then
screen:expect{grid=[[
## grid 1
[4:--------------------]{5:│}[2:-------------------]|*5
{5:[No Name] [+] }{4:[No Name] }|
[3:----------------------------------------]|
## grid 2
^ |
{0:~ }|*4
## grid 3
|
## grid 4
halloj! |
BORDAA |
{0:~ }|*3
]], win_viewport={
[2] = {win = 1000, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1, sum_scroll_delta = 0};
[4] = {win = 1001, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 2, sum_scroll_delta = 0};
}}
else
screen:expect{grid=[[
halloj! {5:│}^ |
BORDAA {5:│}{0:~ }|
{0:~ }{5:│}{0:~ }|*3
{5:[No Name] [+] }{4:[No Name] }|
|
]]}
end
end)
it('terminates border on edge of viewport when window extends past viewport', function()