neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit df915f3afccb2717bc62e7b8649d76885cc3916c
parent 006323dd70ca417f7ad1e79d9ab660d54028dec1
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Sun, 29 Sep 2024 18:38:17 +0800

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


Diffstat:
Msrc/nvim/winfloat.c | 2+-
Mtest/functional/ui/float_spec.lua | 16++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/nvim/winfloat.c b/src/nvim/winfloat.c @@ -59,7 +59,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; } diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua @@ -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