diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-02-05 21:07:18 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-02-05 21:07:18 +0100 |
commit | 2e6638d5f03ae183999c726ba63e528d556342c0 (patch) | |
tree | e077d43701db19bc3bf4660d9b12c6304e031d58 /src | |
parent | 7077892a7918845a00ce8d7833b43cc6cbed2081 (diff) |
patch 8.2.0214: a popup window with a terminal can be made hiddenv8.2.0214
Problem: A popup window with a terminal can be made hidden.
Solution: Disallow hiding a terminal popup.
Diffstat (limited to 'src')
-rw-r--r-- | src/popupwin.c | 4 | ||||
-rw-r--r-- | src/testdir/dumps/Test_terminal_popup_4.dump | 15 | ||||
-rw-r--r-- | src/testdir/test_terminal.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 30 insertions, 2 deletions
diff --git a/src/popupwin.c b/src/popupwin.c index c43800099f..56d04b57e9 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -2371,6 +2371,10 @@ f_popup_close(typval_T *argvars, typval_T *rettv UNUSED) void popup_hide(win_T *wp) { +#ifdef FEAT_TERMINAL + if (error_if_term_popup_window()) + return; +#endif if ((wp->w_popup_flags & POPF_HIDDEN) == 0) { wp->w_popup_flags |= POPF_HIDDEN; diff --git a/src/testdir/dumps/Test_terminal_popup_4.dump b/src/testdir/dumps/Test_terminal_popup_4.dump new file mode 100644 index 0000000000..de1e6c9578 --- /dev/null +++ b/src/testdir/dumps/Test_terminal_popup_4.dump @@ -0,0 +1,15 @@ +|3+0&#ffffff0| @12|╔+0&#a8a8a8255|═@44|╗| +0&#ffffff0@13 +|4| @12|║+0&#a8a8a8255|s|o|m|e| |t|e|x|t| @35|║| +0&#ffffff0@13 +|5| @12|║+0&#a8a8a8255|t|o| |e+0&#ffff4012|d|i|t| +0&#a8a8a8255@37|║| +0&#ffffff0@13 +|6| @12|║+0&#a8a8a8255|i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| @27|║| +0&#ffffff0@13 +|7| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|8| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|9| @12|║+0&#a8a8a8255|~+0#4040ff13&| @43|║+0#0000000&| +0&#ffffff0@13 +|1|0| @11|║+0&#a8a8a8255|/|e|d|i|t| @21|2|,|4| @10|A|l@1| |║| +0&#ffffff0@13 +|1@1| @11|╚+0&#a8a8a8255|═@44|⇲| +0&#ffffff0@13 +|1|2| @72 +|1|3| @72 +|E+0#ffffff16#e000002|r@1|o|r| |d|e|t|e|c|t|e|d| |w|h|i|l|e| |p|r|o|c|e|s@1|i|n|g| |f|u|n|c|t|i|o|n| |H|i|d|e|P|o|p|u|p|:| +0#0000000#ffffff0@23 +|l+0#af5f00255&|i|n|e| @3|1|:| +0#0000000&@64 +|E+0#ffffff16#e000002|8|6|3|:| |N|o|t| |a|l@1|o|w|e|d| |f|o|r| |a| |t|e|r|m|i|n|a|l| |i|n| |a| |p|o|p|u|p| |w|i|n|d|o|w| +0#0000000#ffffff0@24 +|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35 diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 3ff5db6852..c028c69f67 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -2337,12 +2337,15 @@ func Test_terminal_in_popup() \ 'hi PopTerm ctermbg=grey', \ 'func OpenTerm(setColor)', \ " let buf = term_start('" .. cmd .. " Xtext', #{hidden: 1, term_finish: 'close'})", - \ ' let winid = popup_create(buf, #{minwidth: 45, minheight: 7, border: [], drag: 1, resize: 1})', + \ ' let s:winid = popup_create(buf, #{minwidth: 45, minheight: 7, border: [], drag: 1, resize: 1})', \ ' if a:setColor', - \ ' call win_execute(winid, "set wincolor=PopTerm")', + \ ' call win_execute(s:winid, "set wincolor=PopTerm")', \ ' endif', \ 'endfunc', \ 'call OpenTerm(0)', + \ 'func HidePopup()', + \ ' call popup_hide(s:winid)', + \ 'endfunc', \ ] call writefile(lines, 'XtermPopup') let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15}) @@ -2356,6 +2359,10 @@ func Test_terminal_in_popup() call term_sendkeys(buf, "/edit\<CR>") call VerifyScreenDump(buf, 'Test_terminal_popup_3', {}) + call term_sendkeys(buf, "\<C-W>:call HidePopup()\<CR>") + call VerifyScreenDump(buf, 'Test_terminal_popup_4', {}) + call term_sendkeys(buf, "\<CR>") + call term_sendkeys(buf, ":q\<CR>") call term_wait(buf, 100) " wait for terminal to vanish diff --git a/src/version.c b/src/version.c index e1a2e98c1c..97584e37e7 100644 --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 214, +/**/ 213, /**/ 212, |