mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(window): close floats first when closing buffer in other tab (#20284)
This commit is contained in:
parent
a7f6f0e2dd
commit
2083c1771a
@ -2464,7 +2464,8 @@ void close_windows(buf_T *buf, bool keep_curwin)
|
||||
for (tp = first_tabpage; tp != NULL; tp = nexttp) {
|
||||
nexttp = tp->tp_next;
|
||||
if (tp != curtab) {
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, tp) {
|
||||
// Start from tp_lastwin to close floating windows with the same buffer first.
|
||||
for (win_T *wp = tp->tp_lastwin; wp != NULL; wp = wp->w_prev) {
|
||||
if (wp->w_buffer == buf
|
||||
&& !(wp->w_closing || wp->w_buffer->b_locked > 0)) {
|
||||
win_close_othertab(wp, false, tp);
|
||||
|
@ -596,6 +596,11 @@ describe('float window', function()
|
||||
meths.buf_delete(old_buf, {force = true})
|
||||
eq(old_win, curwin().id)
|
||||
end)
|
||||
it('if called from non-floating window in another tabpage', function()
|
||||
command('tab split')
|
||||
eq(3, #meths.list_tabpages())
|
||||
meths.buf_delete(old_buf, {force = true})
|
||||
end)
|
||||
it('if called from floating window with the same buffer', function()
|
||||
meths.set_current_win(same_buf_float)
|
||||
command('autocmd WinLeave * let g:win_leave = nvim_get_current_win()')
|
||||
|
Loading…
Reference in New Issue
Block a user