Mercurial > vim
changeset 16863:2b00163053cd v8.1.1433
patch 8.1.1433: win_execute() may leave popup window focused
commit https://github.com/vim/vim/commit/eea169983654de8a502c2c6521696a4b504abfa3
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri May 31 17:34:48 2019 +0200
patch 8.1.1433: win_execute() may leave popup window focused
Problem: Win_execute() may leave popup window focused, eventually leading
to a crash. (Bjorn Linse)
Solution: When previous window was closed, go to the first window.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 31 May 2019 17:45:06 +0200 |
parents | 2d5b340e1670 |
children | 625dec2f1b1b |
files | src/testdir/test_popupwin.vim src/version.c src/window.c |
diffstat | 3 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -105,6 +105,14 @@ func Test_popup_with_syntax_setbufvar() call delete('XtestPopup') endfunc +func Test_win_execute_closing_curwin() + split + let winid = popup_create('some text', {}) + call win_execute(winid, winnr() .. "close") + call assert_equal(1, winnr()) + popupclear +endfunc + func Test_popup_with_wrap() if !CanRunVimInTerminal() return
--- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1433, +/**/ 1432, /**/ 1431,
--- a/src/window.c +++ b/src/window.c @@ -6573,6 +6573,12 @@ restore_win_noblock( curwin = save_curwin; curbuf = curwin->w_buffer; } +#ifdef FEAT_TEXT_PROP + else if (bt_popup(curwin->w_buffer)) + // original window was closed and now we're in a popup window: Go + // to the first valid window. + win_goto(firstwin); +#endif } /*