fix(float): properly find last window of tabpage (#30571)

(cherry picked from commit df915f3afc)
This commit is contained in:
zeertzjq 2024-09-29 18:38:17 +08:00 committed by github-actions[bot]
parent 1fc09b0738
commit 045afa9e8a
2 changed files with 17 additions and 1 deletions

View File

@ -58,7 +58,7 @@ win_T *win_new_float(win_T *wp, bool last, WinConfig fconfig, Error *err)
if (!tp) {
return NULL;
}
tp_last = tp->tp_lastwin;
tp_last = tp == curtab ? lastwin : tp->tp_lastwin;
while (tp_last->w_floating && tp_last->w_prev) {
tp_last = tp_last->w_prev;
}

View File

@ -662,6 +662,22 @@ describe('float window', function()
screen:detach()
end)
it('no crash with relative="win" after %bdelete #30569', function()
exec([[
botright vsplit
%bdelete
]])
api.nvim_open_win(0, false, {
relative = 'win',
win = 0,
row = 0,
col = 5,
width = 5,
height = 5,
})
assert_alive()
end)
describe('with only one tabpage,', function()
local float_opts = {relative = 'editor', row = 1, col = 1, width = 1, height = 1}
local old_buf, old_win