diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-09-29 18:38:17 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-29 10:38:17 +0000 |
commit | df915f3afccb2717bc62e7b8649d76885cc3916c (patch) | |
tree | 4cf6a5a14b94dab27664aabe1da23a376a20c73d | |
parent | 006323dd70ca417f7ad1e79d9ab660d54028dec1 (diff) | |
download | rneovim-df915f3afccb2717bc62e7b8649d76885cc3916c.tar.gz rneovim-df915f3afccb2717bc62e7b8649d76885cc3916c.tar.bz2 rneovim-df915f3afccb2717bc62e7b8649d76885cc3916c.zip |
fix(float): properly find last window of tabpage (#30571)
-rw-r--r-- | src/nvim/winfloat.c | 2 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/nvim/winfloat.c b/src/nvim/winfloat.c index f7e9128599..fdb65ad614 100644 --- 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 index b2ed5f5a5f..9b77cb4014 100644 --- 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 |