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
 }
 
 /*