diff options
author | LemonBoy <thatlemon@gmail.com> | 2022-04-23 14:07:56 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-23 14:07:56 +0100 |
commit | 4a392d244018fadda375a490f4f4b921023248b9 (patch) | |
tree | 3387e57ffd7618b49c3b88313b6c5e98d7a91cee | |
parent | 2c40707baa13a53cac4137ffb8b2ac67f50cea63 (diff) | |
download | vim-git-4a392d244018fadda375a490f4f4b921023248b9.tar.gz |
patch 8.2.4814: possible to leave a popup window with win_gotoid()v8.2.4814
Problem: Possible to leave a popup window with win_gotoid().
Solution: Give an error when trying to leave a popup window with
win_gotoid(). (closes #10253)
-rw-r--r-- | src/evalwindow.c | 7 | ||||
-rw-r--r-- | src/testdir/test_terminal3.vim | 12 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/evalwindow.c b/src/evalwindow.c index 43a6d63ef..fd62579cd 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -817,6 +817,13 @@ f_win_gotoid(typval_T *argvars, typval_T *rettv) return; } #endif +#if defined(FEAT_PROP_POPUP) && defined(FEAT_TERMINAL) + if (popup_is_popup(curwin) && curbuf->b_term != NULL) + { + emsg(_(e_not_allowed_for_terminal_in_popup_window)); + return; + } +#endif FOR_ALL_TAB_WINDOWS(tp, wp) if (wp->w_id == id) { diff --git a/src/testdir/test_terminal3.vim b/src/testdir/test_terminal3.vim index 9b5a02f52..b798e9a0b 100644 --- a/src/testdir/test_terminal3.vim +++ b/src/testdir/test_terminal3.vim @@ -528,6 +528,18 @@ func Test_double_popup_terminal() exe buf2 .. 'bwipe!' endfunc +func Test_escape_popup_terminal() + set hidden + + " Cannot escape a terminal popup window using win_gotoid + let prev_win = win_getid() + eval term_start('sh', #{hidden: 1, term_finish: 'close'})->popup_create({}) + call assert_fails("call win_gotoid(" .. prev_win .. ")", 'E863:') + + call popup_clear(1) + set hidden& +endfunc + func Test_issue_5607() let wincount = winnr('$') exe 'terminal' &shell &shellcmdflag 'exit' diff --git a/src/version.c b/src/version.c index 7530c1b54..c1096e2f5 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4814, +/**/ 4813, /**/ 4812, |